sql-server - 在sql中将日期范围拆分为按天计算的行
问题描述
我有一个有 3 列的表
我想根据 Promo_Period_Start 和 Promo_Period_End 每天拆分
我尝试的是以下
declare @d datetime;
set @d = getdate();
select *
from [dbo].[T]
where @d between Promo_Period_Start and Promo_Period_End
样本数据
解决方案
使用递归 CTE
;WITH cte AS (
SELECT ID, Promo_Period_Start,Promo_Period_End
FROM T
UNION ALL
SELECT ID, DATEADD(day, 1, Promo_Period_Start), Promo_Period_End
FROM cte
WHERE Promo_Period_Start < Promo_Period_End
)
SELECT * FROM cte
推荐阅读
- python - 如何在 Databricks 中引用笔记本的路径/%run 在做什么?
- c++ - 如何实现通用 C++ 来配置功能?
- javascript - 将多维字符串转换为数组 Javascript
- javascript - Javascript 在控制台中返回“slowAES is not defined”
- python - 如何将可变形状嵌套列表复制到固定形状列表
- drupal - 使用 Shopify Webhook 将 IP 地址发送回 Drupal 站点
- visual-studio-code - 如何在 Circle CI 上运行我的 VS Code 扩展测试?
- css - SCSS 无法编译,抛出错误
- android - Android 工作室 - 团队服务 Oauth 登录
- c - 为什么 PDcurses 显示的字符串与源文件和流不同?