找到两个日期时间之间的微小差异
问题描述:
我需要得到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
的必要结果这里的日期将始终处于相同的日期,并根据默认值计算出18点的最后一个用户的时间差。假设任何用户的日期不会跨越6PM时间。
请建议如何编写相同的查询。
答
我找到了解决办法。如果它不正确,让我知道
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;
答
您可以使用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