找出2个日期时间之间的微小差异

时间:2016-08-21 13:25:40

标签: sql oracle

我需要得到2个日期时间(以分钟为单位)之间的差异(以分钟为单位的时差)。最后一个差异将根据每个日期的下午6点进行计算。

样本数据:需要最后一栏的结果

User_Name   Date            Time difference in minutes
User 1  1/1/06 12:00 PM     30
user 2  1/1/06 12:30 PM     315
user 3  1/1/06 5:45 PM      15

此处日期将始终在同一日期,并且最后一个用户日期差异根据默认值6PM计算。假设任何用户的日期不会超过6PM时间。

请建议如何编写相同的查询。

2 个答案:

答案 0 :(得分:2)

您可以使用lead窗口功能。

我假设您的表名为mytable,日期列为mydate(调用列Date是一个坏主意,因为它是保留字)。

select   user_name,
         round((lead(mydate, 1, trunc(mydate)+18/24) 
             over (partition by trunc(mydate) order by mydate) 
         - mydate) *24*60) as difference 
from     mytable

答案 1 :(得分:0)

我找到了解决方案..如果不正确请告诉我

SELECT User_name,created_date,
trunc(to_number((cast(nvl(lead (created_date,1) OVER (ORDER BY created_date),TRUNC(SYSDATE) + (19/24)) as date) - cast(created_date as date)))*24*60) as difference
FROM users;