【发布时间】:2020-10-05 20:46:51
【问题描述】:
我需要返回给定日期的月份数。对于当前月份,月份编号为 0。对于下个月,MonthNo 为 1。上个月为 -1,2 个月前为 -2。等等 因此,假设今天是 2020 年 6 月 16 日,请参见下面的示例数据:
IF OBJECT_ID('tempdb..#DateTest') IS NOT NULL
DROP TABLE #DateTest
CREATE TABLE #DateTest
(
DateTest Date
)
INSERT INTO #DateTest
VALUES
('23/08/2020'),
('14/06/2020'),
('01/06/2020'),
('15/05/2020'),
('01/05/2020'),
('18/01/2020')
Select * FROM #DateTest
我需要返回以下内容:
Date MonthNo
23/08/2020 2
14/06/2020 0
01/06/2020 0
15/05/2020 -1
01/05/2020 -1
18/01/2020 -5
有没有办法返回这个信息?
【问题讨论】:
-
DateDiff 有什么问题?
-
旁注:您不应该使用
dd/MM/yyyy作为日期格式,因为它是特定于文化的(例如,尝试在 Rextester 上运行它,将字符串转换为日期时间时会出错)。而是使用 ISO8601 中指定的格式之一:yyyy-MM-dd或yyyymmdd。这样,您在任何文化中都是安全的。
标签: sql sql-server tsql sql-server-2012