计算MySQL中两个日期时间之间的差异


Answers:


296

使用TIMESTAMPDIFFMySQL函数。例如,您可以使用:

SELECT TIMESTAMPDIFF(SECOND, '2012-06-06 13:13:55', '2012-06-06 15:20:18')

在您的情况下,TIMSTAMPDIFF函数的第三个参数将是当前登录时间(NOW())。第二个参数是上次登录时间,该时间已在数据库中。


那就是更新最近的登录权吗?我想要的就像是stackoverflow中您2年前,30年前,2分钟前发布的问题。等等。我想要类似的功能。例如,有一个表说REQUESTS(id,消息,时间戳)。存储时的时间戳记为NOW()。当我运行查询时,请从请求中选择*,而不是显示该值,它应显示id,消息和发布请求的时间。
Devesh Agrawal

1
在执行查询SELECT TIMESTAMPDIFF(SECOND,NOW()时,“从id ='2'的请求中选择lastLoginTime”。)。返回NULL。知道为什么吗?
Devesh Agrawal

来自id ='2'的请求中的select lastLoginTime的输出是什么?
FSP 2012年

SELECT TIMESTAMPDIFF(SECOND,NOW(),'2012-06-06 08:07:36'); 试试这个!
FSP 2012年

是的工作,但我需要从表中获取第二个参数。如何实现这一目标。实际上,我想避免嵌套查询。任何想法?
Devesh Agrawal

3

我关于逻辑的两分钱:

语法是“旧日期”-:“新日期”,因此:

SELECT TIMESTAMPDIFF(SECOND, '2018-11-15 15:00:00', '2018-11-15 15:00:30')

给30

SELECT TIMESTAMPDIFF(SECOND, '2018-11-15 15:00:55', '2018-11-15 15:00:15')

给出:-40


2

如果开始日期和结束日期时间是在不同的日期,请使用TIMEDIFF。

SELECT TIMEDIFF(datetime1,datetime2)

如果datetime1> datetime2然后

SELECT TIMEDIFF("2019-02-20 23:46:00","2019-02-19 23:45:00")

给:24:01:00

和datetime1 <datetime2

SELECT TIMEDIFF("2019-02-19 23:45:00","2019-02-20 23:46:00")

给:-24:01:00


请注意,日期最多只能相隔839小时
Caius Jard
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.