我需要得到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时间。
请建议如何编写相同的查询。
答案 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;