2017-06-15 80 views
0

我正在爲我的大學寫一個在線視頻遊戲項目的觸發器,並且此觸發器旨在用於在遊戲8小時後投放廣告(觸發DBMS輸出我猜)。在兩個日期之間選擇一個小時間隔SQL Oracle 11g

但我無法計算這個差異:

例如,我得到:

LOGINDATE    LOGOUTDATE 
-------------------- -------------------- 
15-MAG-2017 23:15:42 16-MAG-2017 02:15:54 

在觸發我想借的小時總量從LOGINDATE-LOGOUTDATE減去,並將其保存到一個變量MAX_HOURS中,這個變量將轉化爲IF語句(例如MAX_HOURS> 8)

有沒有辦法做到這一點?

+1

爲什麼你在計算時遇到問題 - 你現在在做什麼,它有什麼問題? (另外,不確定這是否有意義;甚至應該是什麼觸發?如果他們已經登錄超過8小時,他們註銷時是否顯示一些內容?) –

回答

2

實施例:日期減法

select (LOGOUTDATE - LOGINDATE)*24 
INTO MAX_HOURS 
     from your_table; 

結果爲以日爲單位。乘以24小時獲得小時數。

+0

哦,我的上帝,它像一個魅力一樣工作!我想這個評論,但我沒有聲望做到這一點呢! 非常感謝您的好意,但我有兩個問題:這個hour_diff的工作原理是什麼?從來沒有聽說過。 第二個問題:是否有一種方法來舍入這個查詢的結果? (例如:從3,00333到3) – Asynchronousx

+0

是的,如果您減去兩個日期字段的差異不是整個#日期,那麼結果也包含一個分數。你可以使用oracle ROUND函數。看到這個教程https://www.akadia.com/services/ora_date_time.html – OldProgrammer

+2

@Asynchronousx - 如果你願意,你仍然可以[接受答案](https://stackoverflow.com/help/someone-answers)即使你還不能投票。 –

相關問題