son*_*ona 21 sql-server date sql-server-2008
我希望表中的记录存储当前插入记录时的当前日期.
我试过了:
SELECT PId
,WorkDate
,Hours
,EmpId
FROM Acb
WHERE EmpId=@EmpId AND WorkDate BETWEEN DATEADD(DAY, -7, GETDATE()) AND GETDATE()
Run Code Online (Sandbox Code Playgroud)
Twi*_*les 27
像这样做:
SET DATEFIRST 1 -- Define beginning of week as Monday
SELECT [...]
AND WorkDate >= dateadd(day, 1-datepart(dw, getdate()), CONVERT(date,getdate()))
AND WorkDate < dateadd(day, 8-datepart(dw, getdate()), CONVERT(date,getdate()))
Run Code Online (Sandbox Code Playgroud)
说明:
datepart(dw, getdate())将返回当前周的日期编号,从1到7,从您使用SET DATEFIRST指定的任何内容开始.dateadd(day, 1-datepart(dw, getdate()), getdate()) 减去到达当周开始的必要天数CONVERT(date,getdate()) 用于删除GETDATE()的时间部分,因为您希望数据从午夜开始.一个更好的方法是
select datepart(ww, getdate()) as CurrentWeek
Run Code Online (Sandbox Code Playgroud)
你也可以使用wk而不是ww.