让用户选择他想要多少天的数据

时间:2018-07-25 16:17:51

标签: sql-server

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。我已经在上面编写了查询,它返回了一些数据,但是我对查询的正确与否感到困惑?

1 个答案:

答案 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传递给函数。