【发布时间】:2016-01-06 10:48:09
【问题描述】:
然后我如何获得两者去年的等价物:
去年的前几周星期一 去年的前几周星期日日期
基于我得到的价值:
--今年上周开始
SELECT DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 0)
--今年上周结束
SELECT DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 6)
因此,根据今天的日期(2016 年 6 月 1 日),我得到了今年的以下信息:
今年前一个星期一的日期 = 28/12/2015
今年之前的周日日期 = 03/01/2016
我想实现:
去年的前一个星期一日期 = 29/12/2014
去年的上周日日期 = 04/01/2015
语法将每 4 年处理一次闰年问题。
谢谢
【问题讨论】:
-
你能再举几个例子,特别注意边界,例如对我来说,您的第一个代码似乎在周六和周日之间转换-如果您在今天的日期是 2016-01-03 时询问“上周”,它会返回 2015-12-28 - 2016-01-03,即包括当前星期日的范围。对吗?
-
您是否要求去年前一周的开始和结束日期与今年当前周的数字相同?如果是这样,这样的事情可能会奏效吗?
SET DATEFIRST 2 SELECT DATEADD(WEEK,DATEPART(Wk,DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 0))-1,DATEADD(YEAR,-1,GETDATE())) AS PreviousMonday
标签: sql sql-server sql-server-2008