2016-08-21 22 views
0

2つの日付時刻(分単位の時間差)を取得する必要があります。そして最後の違いは、毎日の午後6時に基づいて計算されます。2つの日付時刻の間の微妙な差異を見つける

サンプルデータ:最後の列の必要性の結果

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 

ここでは日付が同じ日付とデフォルト値の午後6時に基づいて算出した最後のユーザーの日付の差が常になります。任意のユーザーの日付が6PM時間を超えないと仮定します。

同じ質問を書く方法をお勧めします。

答えて

0

その私はあなたがleadウィンドウ関数を使用することができ

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

を教えて修正されていない場合、私は...解決策を見つけました。

あなたのテーブルは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 
関連する問題