首页 > 数据库 > mysql教程 > 如何使用两个参数之间的日期填充临时表?

如何使用两个参数之间的日期填充临时表?

Mary-Kate Olsen
发布: 2024-12-28 13:46:11
原创
852 人浏览过

How to Populate a Temporary Table with Dates Between Two Parameters?

用参数之间的日期填充临时表

用两个日期参数之间(含)的日期填充临时表,包括第一天月份,请考虑以下方法:

第 1 步:创建递归公用表表达式 (CTE)

;WITH cte AS (
SELECT CASE WHEN DATEPART(Day,@StartDate) = 1 THEN @StartDate 
            ELSE DATEADD(Month,DATEDIFF(Month,0,@StartDate)+1,0) END AS myDate
UNION ALL
SELECT DATEADD(Month,1,myDate)
FROM cte
WHERE DATEADD(Month,1,myDate) <=  @EndDate
)
登录后复制

第 2 步:从 CTE

SELECT myDate
FROM cte
OPTION (MAXRECURSION 0)
登录后复制

示例:

对于 @StartDate = '2011-01-01' 和@EndDate = '2011-08-01',临时表中将返回以下日期:

2011-01-01
2011-02-01
2011-03-01
2011-04-01
2011-05-01
2011-06-01
2011-07-01
2011-08-01
登录后复制

注意:

此方法处理以下情况@StartDate 不是该月的第一天,而是从下个月的第一天开始递归。如果您无论如何都想以 @StartDate 开始,请从 CTE 定义中的内部 SELECT 语句中删除 1。

以上是如何使用两个参数之间的日期填充临时表?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板