SQL查询:datetime =过去24小时,怎么办?

时间:2019-09-05 04:27:35

标签: sql sql-server datetime

select eventdatetime, eventid, sCode, sNarrative
FROM [Blue Prism].dbo.BPAAuditEvents;    

eventdatetime类型为日期时间。

我需要创建一个查询以返回这些列,其中eventdatetime =最近24小时。

我该怎么做?

我尝试了很多查询,但是没有任何运气。

1)WHERE DATE(eventdatetime) = DATE(NOW())

这返回了语法错误

  

SQL错误[195] [S00010]:'DATE'不是公认的内置函数名称。

2)where convert(varchar(10), eventdatetime, 102) = convert(varchar(10), getdate(), 102)

这没有返回任何数据,但也没有错误。

3)WHERE CAST(eventdatetime AS DATE) = CAST(GETDATE() AS DATE)

这也没有返回任何数据,但也没有错误。

select eventdatetime, eventid, sCode, sNarrative
FROM [Blue Prism].dbo.BPAAuditEvents;

我希望输出的记录是从查询运行开始的eventdatetime <= 24小时。

3 个答案:

答案 0 :(得分:2)

您想使用dateadd function将-24小时添加到 now getdate())并将其与您的{{1 }}列,例如

eventdatetime

答案 1 :(得分:0)

在过去的24小时内,我假设您是指介于当前时间和之前的24小时之间的任何日期时间。

public MyEntity usersCheck(@PathVariable String 
 username){
   return userRepo.getByUsername(username);
}

More examples

答案 2 :(得分:0)

您可以使用以下几种SQL函数:

NOW() 2019-08-05 15:13:00
SYSDATETIME() 2019-08-05 13:10:02.0474381
SYSDATETIMEOFFSET()2019-08-05 13:10:02.0474381 -07:00
SYSUTCDATETIME() 2019-08-05 20:10:02.0474381
CURRENT_TIMESTAMP 2019-08-05 13:10:02.047 +
GETDATE() 2019-08-05 13:10:02.047 
GETUTCDATE() 2019-08-05 20:10:02.047
CURDATE() 2019-08-05
CURTIME() 13:10:02.047

查询就像@Dale Burrell帖子:

select eventdatetime, eventid, sCode, sNarrative
from [Blue Prism].dbo.BPAAuditEvents
where eventdatetime > dateadd(hour, -24, [SQL function]);

select eventdatetime, eventid, sCode, sNarrative
from [Blue Prism].dbo.BPAAuditEvents
where eventdatetime >= dateadd([timetype], [timevalue], [SQL function])
  and eventdatetime < dateadd([timetype], [timevalue], [SQL function]);

在第一个脚本中,您可以使用>=,因此最后24小时甚至更长的时间将完全相等,或者仅使用>仅持续24小时更大的时间。 然后,您只需要根据需要更改功能即可。

第二个是特定时间。与第一个一样,您可以在>=>

之间进行切换
  

[时间类型]:分钟,小时,天,月,年

     

[时间值]:您需要的数字值