这种方式确实有效,但它调用了 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)
最佳答案
不应该
TIMESTAMPDIFF(SECOND, now(), '2009-09-23 22:07:42')
只用一个函数调用就可以做到同样的事情(不算 now()
)? (目前无法访问 MySQL,MSSQL 的工作方式略有不同,因此无法测试)。
基本上 UNIX 时间戳是从一个奇怪的纪元开始的秒数,所以差异只是秒数的差异。此外,此功能仅在 MySQL 5 及更高版本中可用。
但总的来说,遇到问题时要担心性能问题,在此之前编写可读代码。
关于sql - 如何在 MySQL 中最有效地获取两个日期时间值之间的 unix 时间戳间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1466285/