2016-08-21 194 views
0

我需要得到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时间。

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

回答

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; 
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