您好,我正在尝试从数据库中提取最后 5 分钟的数据。 我在下面写的查询没有提取我需要的数据。
Select e.*
from Event e
where e.whenoccurred >= datefunc('10/01/2019 00:00 -05:00', '-5 minutes')
and dateadd(minutes,-5,getdate())
我收到错误
Query has failed: no such column: minutes
有什么想法可以提供帮助吗?
SysDate返回为数据库所在的操作系统设置的当前日期和时间。返回值的数据类型为 DATE,返回的格式取决于 NLS_DATE_FORMAT 初始化参数的值。该函数不需要参数。在分布式 SQL 语句中,此函数返回为本地数据库的操作系统设置的日期和时间。
此查询获取 sysdate 减去五分钟。
select *
from event
where whenoccured >= sysdate - (5/1440)
使用
查询 #1 演示
SELECT * FROM event
where whenoccured >= date_sub(now(), interval 5 minute);
查询 #2 演示
SELECT * FROM event
WHERE whenoccured >= NOW() - INTERVAL 5 MINUTE;
查询 #3 演示
SELECT * FROM event
WHERE DATE_ADD(whenoccured , INTERVAL 5 MINUTE) >= NOW();
您可以使用
select *
from event
where whenoccured >= systimestamp - interval '5' minute
其中systimestamp
返回当前系统日期,包括秒和时区的小数部分。
更新(如果MySQL DB是这种情况而不是最初标记的Oracle(使用date_sub()
函数:
select *
from event
where whenoccured >= date_sub(now(), interval 5 minute);
假设whenoccured
列的类型为datetime
或timestamp
演示
在SQL Server上,dateadd函数的第一个参数应该用单数写。在您的情况下,您应该使用"分钟"而不是"分钟"。
下面是一个工作示例:
select getdate()
select dateadd(minute,-5,getdate())
有关dateadd函数的更多详细信息,我建议您参考 https://www.w3schools.com/sql/func_sqlserver_dateadd.asp