【发布时间】:2017-07-12 07:04:51
【问题描述】:
我正在寻找一些 T-SQL 代码,它应该选择“从当前日期回溯一年(1 月的最后一个星期日)”的日期。
我有一些 T-SQL 代码正在 SQL Server 2014 中使用:
select
convert(varchar(10), DATEADD(day, DATEDIFF(day, '19000107', DATEADD(month, DATEDIFF(MONTH, 0, CONVERT(date, CONVERT(VARCHAR(4), (CASE WHEN MONTH(GetDate()) = 1 THEN CONVERT(VARCHAR(4), GetDate(), 112) - 1 ELSE CONVERT(VARCHAR(4), GetDate(), 112) END), 112) + '0101')), 30)) / 7 * 7, '19000107'), 120)
上面的代码选择了当年的日期(一月的最后一个星期日)。但我希望 T-SQL 代码选择去年(1 月的最后一个星期日的日期)的日期。
详细说明 - 我希望 T-SQL 代码从下表中生成 预期结果
Current day Expected result
---------------------------------------
2017-02-05 2016-01-31
2017-01-05 2015-01-25
2018-02-19 2017-01-29
2018-01-19 2016-01-31
2019-02-28 2018-01-28
请注意,年份总是从“一月的最后一个星期日”开始。
【问题讨论】:
标签: sql sql-server sql-server-2008 date sql-server-2012