如何在MySQL中最有效地获取两个日期时间值之间的unix时间戳间隔?

发布于 2024-08-06 01:15:23 字数 500 浏览 8 评论 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)

This way surely works,but it calls UNIX_TIMESTAMP 2 times:

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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

人事已非 2024-08-13 01:15:23

难道不应该

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

只对一个函数调用执行相同的操作(不包括 now())吗? (目前无法访问 MySQL,MSSQL 的工作方式略有不同,因此无法测试)。

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

但总的来说,当出现问题时要担心性能,在此之前编写可读的代码。

Shouldn't

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

do the same with just one function call (not counting now())? (No access to MySQL right now and MSSQL works a little different, so can't test).

Basically a UNIX timestamp is the number of seconds since a weird epoch, so a difference is just a difference in seconds. Also, this function is only available in MySQL 5 and later.

But in general, worry about performance when you have a problem, write readable code until then.

苹果你个爱泡泡 2024-08-13 01:15:23
SELECT  TIME_TO_SEC(TIMEDIFF(NOW(), '2009-09-23 22:07:42'))
SELECT  TIME_TO_SEC(TIMEDIFF(NOW(), '2009-09-23 22:07:42'))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文