【发布时间】:2014-01-17 15:19:25
【问题描述】:
我又开始使用更多的 tsql。有没有比下面更好的方法来生成一个表格,其中包含给定开始和结束日期的月份和年份整数?
DECLARE @FromDate DATETIME, @ToDate DATETIME
SET @FromDate = '2012-01-01 00:00:00.000'
SET @ToDate = '2012-31-12 23:59:59.000'
DECLARE @MonthsAndYears table (Month INT, Year int)
;WITH dates AS
(
SELECT @FromDate 'date'
UNION ALL
SELECT DATEADD(dd, 1, t.date)
FROM dates t
WHERE DATEADD(dd, 1, t.date) <= @ToDate
)
INSERT INTO @MonthsAndYears
SELECT
DATEPART(MONTH, date),
DATEPART(YEAR, date)
FROM dates
GROUP BY
DATEPART(MONTH, date),
DATEPART(YEAR, date)
option (maxrecursion 0)
【问题讨论】:
-
小心
2012-31-12之类的东西,也不要费心将时间设置为午夜前一分钟...... -
在这种情况下 - 可能是一个愚蠢的问题 - 00:00:00.000 是一天的开始还是结束?
-
00:00:00.000 是午夜 - 一天的开始。
标签: sql-server tsql sql-server-2005