我使用以下Query来显示表格中当前日期中日期所在的条目。我需要将其更改为仅显示从当前日期到本周末,而不是漏洞周。
SET DATEFIRST 1
SELECT distinct Initials
FROM Scheme
WHERE CONVERT(datetime, Dato, 105) >= dateadd(day, 1-datepart(dw, getdate()), CONVERT(date,getdate()))
AND convert(datetime, Dato, 105) < dateadd(day, 8-datepart(dw, getdate()), CONVERT(date,getdate()))
AND RoomId = ? AND Initials IS NOT NULL
答案 0 :(得分:1)
有点不同但更有效的方法:
SELECT distinct Initials
FROM Scheme
WHERE Dato >= cast(current_timestamp as date) -- currentdate
AND Dato < dateadd(d, datediff(d, -7, current_timestamp)/7*7, 0)--end of week
AND RoomId = ? AND Initials IS NOT NULL
我认为Dato被定义为日期或日期时间。否则,您可能会遇到一些性能问题,但这不起作用。
答案 1 :(得分:0)
dateadd(day, 1-datepart(dw, getdate()), CONVERT(date,getdate()))
这意味着:将1-datepart(dw, getdate())
天添加到当前日期。
这意味着1-datepart(dw, getdate())
:转到当前周的开始日期。
但您只需要当前日期CONVERT(date,getdate())
。
只需将您的代码更改为:
SET DATEFIRST 1
SELECT distinct Initials
FROM Scheme
WHERE CONVERT(datetime, Dato, 105) >= CONVERT(date,getdate())
AND convert(datetime, Dato, 105) < dateadd(day, 8-datepart(dw, getdate()), CONVERT(date,getdate()))
AND RoomId = ? AND Initials IS NOT NULL