0

这种方式肯定有效,但它调用 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)
4

2 回答 2

3

不应该

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

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

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

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

于 2009-09-23T14:26:18.137 回答
1
SELECT  TIME_TO_SEC(TIMEDIFF(NOW(), '2009-09-23 22:07:42'))
于 2009-09-23T14:27:31.690 回答