从本周返回记录

时间:2015-01-22 13:31:09

标签: sql-server tsql

SELECT *
FROM TABLE TB
WHERE TB.DATE >= dateadd(day, 1-datepart(dw, getdate()), CONVERT(date,getdate())) 
AND TB.DATE <  dateadd(day, 8-datepart(dw, getdate()), CONVERT(date,getdate()))

我的日期如下:2015-01-19 00:00:00

目前我的查询没有返回任何记录。我想从本周返回记录。从周一到周日创造的任何东西。

我正在使用SQL Server 10.50.1617

2 个答案:

答案 0 :(得分:4)

试试这个,它会发现本周从星期一到星期天的所有数据:

SELECT *
FROM TABLE TB
WHERE 
  TB.DATE >= dateadd(d, 0, datediff(d, 0, current_timestamp)/7*7)
  AND TB.DATE <  dateadd(d, 7, datediff(d, 0, current_timestamp)/7*7)

答案 1 :(得分:0)

这将适用于当周星期一至星期日:

SELECT *
FROM TABLE TB
WHERE TB.DATE >= (DATEADD(day, DATEDIFF(day, 1, getdate()) / 7 * 7, - 0)) 
  AND TB.DATE <=  DATEADD(dd,DATEDIFF(dd,0,getdate())+ 1  , + 2)

这将在周一至周日前一周给你:

SELECT *
FROM TABLE TB
WHERE TB.DATE >= DATEADD(wk, DATEDIFF(wk, 6, GETDATE())-1, 7) 
  AND TB.DATE <=  (DATEADD(day, DATEDIFF(day, 1, getdate()) / 7 * 7, - 1))