我想询问如何在工作日获取日期
green is weekday
red is sunday
所以当我在2012年输入sql命令时(如27) 它将显示2012-07-08的日期,直到2012-07-08
答案 0 :(得分:2)
此查询使用单个参数@weekno
作为输入,并返回该周的7天,将星期一作为星期的第一天。 WeekNo 的定义不遵循SQL Server的DatePart(Week)
,因为这取决于@@ Datefirst。这不是。
dateadd..
行是一个返回一年中第一个星期一的表达式。我是从here得到的。它上面的一行只增加了几周,而0-6就增加了7天。要验证这是否正确,请将查询中的CURRENT_TIMESTAMP
更改为日期,例如20180708
。仅供参考,2018年1月1日是星期一。
declare @weekno int = 27;
select
(@weekno-1)*7+v.num+
dateadd(dd,(datediff(dd,0,dateadd(yy,datediff(yy,0,CURRENT_TIMESTAMP),6))/7)*7,0)
from (values(0),(1),(2),(3),(4),(5),(6))v(num)
order by num
-- results
July, 02 2012 00:00:00+0000
July, 03 2012 00:00:00+0000
July, 04 2012 00:00:00+0000
July, 05 2012 00:00:00+0000
July, 06 2012 00:00:00+0000
July, 07 2012 00:00:00+0000
July, 08 2012 00:00:00+0000