2017-06-15 54 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)即使你还不能投票。 –

相关问题