获得下一个活动的小时数

时间:2011-01-01 03:45:48

标签: mysql datetime timestamp

我有一张包含这些数据的表格:

[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

我哪里错了?目标是返回下一次执行的小时数。

谢谢!

1 个答案:

答案 0 :(得分:3)

可以使用timediff() MySQL函数直接获得结果:

  SELECT timediff(lastFinish + INTERVAL 48 HOUR, now()) FROM cron_status;

应将时间显示为hh:mm:ss。假设lastFinishdatetime

为了在数小时内得到答案,

  SELECT timestampdiff(HOUR, now(), lastFinish + INTERVAL 48 HOUR) FROM cron_status;

请注意,timediff执行arg1 - arg2timestampdiff执行arg2 - arg1