【问题标题】:getting number of hours until the next event距离下一个事件的小时数
【发布时间】:2011-01-01 03:45:48
【问题描述】:

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

[ID]  [event_name]  [last_event]
 1     stats         2011-01-01 01:47:32

last_event 是一个时间戳。该事件每 48 小时发生一次(这是一项 cron 作业)。我想向我的用户显示事件再次执行之前的小时数。

到目前为止,我得到了:

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

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

谢谢!

【问题讨论】:

    标签: mysql datetime timestamp


    【解决方案1】:

    可以直接得到结果,使用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;
    

    注意timediffarg1 - arg2timestampdiffarg2 - arg1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      相关资源
      最近更新 更多