【问题标题】:MySQL: Convert relative seconds count to datetime?MySQL:将相对秒数转换为日期时间?
【发布时间】:2014-02-11 21:25:37
【问题描述】:

我有一个 MySQL 数据库显示设备的正常运行时间。正常运行时间是设备已启动的时间(以秒为单位)。我有一个查询,显示所有正常运行时间小于 86400(24 小时)的设备,我想将其引入 PHP 页面。

我想将此正常运行时间字符串编号格式化为人类可读的日期时间。这是我的查询:

select hostname,type,uptime from devices where uptime < 86400

And here is sample output:
hostname: serverA
type: server
uptime: 10329

如何将 10329 转换为实际时间?我假设有某种值可以以秒为单位提取当前时间,减去正常运行时间值,然后将其转换为 MM/DD/YYYY HH:MM:SS 可读值?

非常感谢任何帮助!

编辑: 决定使用下面的两个答案,但这是适合我需要的查询:

SELECT hostname AS Server,type AS Type,NOW() - INTERVAL uptime SECOND AS "Boot Time",last_polled AS "Last SNMP Poll" FROM devices WHERE uptime < 86400

返回:

Server: ServerA
Type: server
Boot Time: 2014-02-11 13:26:52
Last SNMP Poll: 2014-02-11 18:35:14

【问题讨论】:

    标签: mysql sql datetime


    【解决方案1】:

    TIME_FORMAT(SEC_TO_TIME(uptime),'%Hh %im')

    谷歌:Convert seconds to human readable time duration

    select hostname,type,TIME_FORMAT(SEC_TO_TIME(uptime),'%Hh %im') from devices where uptime &lt; 86400

    这将为您提供数小时和数分钟的正常运行时间。如果您愿意,也可以通过阅读 TIME_FORMAT 方法来添加秒数。 http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html#function_time-format

    【讨论】:

    • 谢谢你,但我实际上是想从时间戳中获取启动时间。这是一个很好的答案,我可能会考虑使用它,但我认为 Mihai 可能已经提供了我想要的东西。一旦我有机会测试这一点,我会告诉你的。再次感谢您的回复!
    • 这实际上是一个非常糟糕的答案,因为 SEC_TO_TIME 的最大值为 3020399 秒。
    【解决方案2】:
    SELECT NOW() - INTERVAL 10329 SECOND
    

    【讨论】:

    • 谢谢米海。这正是我所要求的,并且可以将其合并到我的仪表板中。谢谢!!!
    【解决方案3】:

    您只需将时间间隔添加到参考日期+时间值即可计算新的日期+时间值:

    SELECT hostname,type,NOW() - INTERVAL uptime SECOND AS "up since"
    FROM devices
    WHERE uptime < 86400
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      • 2017-10-10
      • 1970-01-01
      • 1970-01-01
      • 2019-05-20
      • 2011-07-05
      相关资源
      最近更新 更多