【问题标题】:How to get unix timestamp interval between two datetime values most efficiently in MySQL?如何在 MySQL 中最有效地获取两个日期时间值之间的 unix 时间戳间隔?
【发布时间】:2009-09-23 14:18:39
【问题描述】:

这种方式确实有效,但它调用了 UNIX_TIMESTAMP 2 次:

mysql> select UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP('2009-09-23 22:07:42');
+---------------------------------------------------------------+
| UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP('2009-09-23 22:07:42') |
+---------------------------------------------------------------+
|                                                           639 |
+---------------------------------------------------------------+
1 row in set (0.05 sec)

【问题讨论】:

  • 您是真的想知道,还是只是喜欢提问?您的个人资料显示了 463 个问题,但只有 8 人对您喜欢的答案投了赞成票!
  • 说真的,我真的很想知道。
  • 没关系,只是看起来很好奇!

标签: sql mysql intervals


【解决方案1】:

不应该

TIMESTAMPDIFF(SECOND, now(), '2009-09-23 22:07:42')

只用一个函数调用做同样的事情(不包括now())? (目前无法访问 MySQL,MSSQL 的工作方式略有不同,因此无法测试)。

基本上,UNIX 时间戳是自一个奇怪的纪元以来的秒数,因此差异只是以秒为单位的差异。另外,此功能仅在 MySQL 5 及更高版本中可用。

但一般来说,遇到问题时担心性能,直到那时才编写可读的代码。

【讨论】:

  • 好吧,我从 MSSQL 开始使用 DATEDIFF 并环顾四周是否有可用的东西 :-)。但是你的答案有相同数量的函数调用,所以我认为不需要删除它
【解决方案2】:
SELECT  TIME_TO_SEC(TIMEDIFF(NOW(), '2009-09-23 22:07:42'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多