当我们输入一周中的任何一天时,如何获得一周中的第一天和一周的最后一天?
例如,如果我们输入日期,则应显示第一天(星期一)和最后一天(星期五)。 也就是说,如果我们进入2014年1月24日,则应显示2014年1月20日和2014年1月24日。
此致
答案 0 :(得分:15)
以下是您可以这样做的方法:
DECLARE @yourdate date = getdate()
Select dateadd(ww, datediff(ww, 0, @yourdate), 0)
Select dateadd(ww, datediff(ww, 0, @yourdate), 4)
您将@yourdate
设置为您想要的日期。第一个SELECT将为您提供第一天,第二个SELECT将为您提供最后一个日期
答案 1 :(得分:2)
试试这个
SELECT DATEADD(wk, DATEDIFF(wk, 6, '5/13/2005'), 6)
SELECT DATEADD(wk, DATEDIFF(wk, 5, '5/13/2005'), 5)
<强>(OR)强>
Declare @Date datetime
Det @Date = '2012-04-12'
Delect @Date - DATEPART(dw, @Date) + 1 FirstDateOfWeek,
@Date + (7 - DATEPART(dw, @Date)) LastDateOfWeek
答案 2 :(得分:2)
这解决了它并且也包裹了年终:
SELECT DATEADD(wk, DATEDIFF(d, 0, '01 January 2017') / 7, 0)
答案 3 :(得分:0)
在已加载日历日期的情况下,可以对表=)
中存在的所有年份进行分组。select
Y,
M,
(Select dateadd(ww, datediff(ww, 0, dt), 0) ) wk_str_dt ,
(Select dateadd(ww, datediff(ww, 0, dt), 4) )wk_end_dt ,
dt recd_crt_dt
from [tcalendar]
where isWeekday= 1
AND DW = 2 -- only mondays
order by Y, W