我有一张包含这些数据的表格:
[ID] [event_name] [last_event]
1 stats 2011-01-01 01:47:32
last_event
是时间戳。该事件每48小时发生一次(这是一项任务)。我想向用户展示事件再次执行前的小时数。
到目前为止,我已经:
SELECT (lastFinish + INTERVAL 48 HOUR) FROM `cron_status`
它给出了下一次出现的确切时间和日期:2011-01-03 01:47:32
。所以我想我是否减去了当前的日期时间......
SELECT ((lastFinish + INTERVAL 48 HOUR) - SYSDATE()) FROM `cron_status`
(我认为?)给出了unix时间的差异:1980015
。但如果我将其除以3600
以将秒数转换为小时......
SELECT (((lastFinish + INTERVAL 48 HOUR) - SYSDATE())/3600) FROM `cron_status`
我的数字数量级太高:549.99
。
我哪里错了?目标是返回下一次执行的小时数。
谢谢!
答案 0 :(得分:3)
可以使用timediff()
MySQL函数直接获得结果:
SELECT timediff(lastFinish + INTERVAL 48 HOUR, now()) FROM cron_status;
应将时间显示为hh:mm:ss
。假设lastFinish
是datetime
。
为了在数小时内得到答案,
SELECT timestampdiff(HOUR, now(), lastFinish + INTERVAL 48 HOUR) FROM cron_status;
请注意,timediff
执行arg1 - arg2
而timestampdiff
执行arg2 - arg1
。