DECLARE @START BIGINT
DECLARE @END BIGINT
SET @START=1980
SET @END=2063
DECLARE @Y_TB TABLE(
YEAR INT
)
DECLARE @M_TB TABLE(
MONTH INT
)
WHILE @START <= @END
BEGIN
INSERT INTO @Y_TB
SELECT @START
SELECT @START=@START+1
END
SET @START=1
SET @end=12
WHILE @START <=@END
BEGIN
INSERT INTO @M_TB
SELECT @START
SELECT @START=@START+1
END
SELECT START,DATEADD(DAY,-1,DATEADD(MONTH,1,START)) END_DATE ,DATEADD(DAY,-1,DATEADD(YEAR,1,START)) YEAR_END_DATE FROM (
SELECT CONVERT(DATETIME,CONVERT(NVARCHAR(4),YEAR)+'-'+CONVERT(NVARCHAR(2),MONTH)+'-01') START FROM @Y_TB A
FULL JOIN @M_TB B ON 1=1
)A
ORDER BY START
区间段月第一天,最后一天,该月年最后一天
本文介绍了一段SQL脚本,该脚本用于生成指定年份范围内的所有年份及每个月的第一天和最后一天的日期。通过两个循环结构,分别创建包含年份和月份的数据表,并利用这些数据来构造日期范围。

被折叠的 条评论
为什么被折叠?



