以下Microsoft SQL查询比较表的两个日期字段,并返回分钟差异大于5的记录。
${batch}
我不知道如何用ORACLE写这个。我搜索了解决方案,我最接近的是:
SELECT t.Id, t.date1, t.date2,
DATEDIFF(MINUTE, t.date1 , t.date2) AS Mtime
FROM table1 t
WHERE
DATEDIFF(MINUTE,t.date1, t.date2) > 5
给了我错误SELECT t.date1, t.date2,
(t.date1 - t.date2) * 1440 AS Mtime
FROM table1 t
WHERE
(t.date1 -t.date2) * 1440 > 5
有没有人知道如何使用ORACLE编写此查询?
答案 0 :(得分:3)
不要使用这种差异。只需添加间隔:
WHERE t.DeliveryDate >= t.Deadline + interval '5' minute
或者:
WHERE t.DeliveryDate >= t.Deadline + 5 / (24 * 60)
SQL Server中的等价物是:
WHERE t.DeliveryDate >= DATEADD(minute, 5, t.Deadline)
这是一个好习惯。如果其中一个值是常量,则使用函数(-
或datediff()
)可以防止使用索引。
答案 1 :(得分:0)
这应该有效 -
SELECT t.Id, t.date1, t.date2,
(CAST(t.date1 AS DATE)-CAST(t.date2 AS DATE)) * 1440 AS Mtime FROM table1 t where (CAST(t.date1 AS DATE)-CAST(t.date2 AS DATE)) * 1440 > 5