declare @Days varchar(max)
set @Days = '-7'
select
dateadd(hour,datepart(hour,Timestamp + GETDATE() - GETUTCDATE()),cast(CAST((Timestamp + GETDATE() - GETUTCDATE()) as date) as datetime)) as [Time]
from [Employee]
where dateadd(hour,datepart(hour,Timestamp + GETDATE() - GETUTCDATE()),cast(CAST((Timestamp + GETDATE() - GETUTCDATE()) as date) as datetime)) >= DATEADD(day,' + @Days + ', GETDATE()))
我希望用户选择他想要的数据天数(@Days)。因此,如果他要获取过去15天的数据,则只需设置@Days ='-15'。时间戳是“雇员”表中的日期和“时间”列,但时间戳是UTC。我已经在上面编写了查询,它返回了一些数据,但是我对查询的正确与否感到困惑?
答案 0 :(得分:1)
我认为以下简单查询应该可以解决问题。
declare @Days INT = -7; --<-- Use int not varchar
SELECT *
FROM [Employee]
WHERE CAST([Timestamp] AS DATE) >= CAST(DATEADD(day, @Days, GETUTCDATE()) AS DATE);
DATEADD()
函数的第二个参数是一个int值,您可以按原样将变量@Days
传递给函数。