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

Dev*_*wal 144 mysql

我将最后登录时间存储在MySQL中的datetime-type字段中.当用户登录时,我想获得上次登录时间和当前时间(我使用的NOW())之间的差异.

我怎么计算呢?

FSP*_*FSP 272

使用TIMESTAMPDIFFMySQL功能.例如,您可以使用:

SELECT TIMESTAMPDIFF(SECOND, '2012-06-06 13:13:55', '2012-06-06 15:20:18')
Run Code Online (Sandbox Code Playgroud)

在您的情况下,TIMSTAMPDIFF函数的第三个参数将是当前登录时间(NOW()).第二个参数是最后一次登录时间,它已经在数据库中.

  • +1`TIMESTAMPDIFF()`似乎不受Y2K38错误的影响. (8认同)

ing*_*nti 8

我对逻辑的两分钱:

语法是“旧日期” - :“新日期”,所以:

SELECT TIMESTAMPDIFF(SECOND, '2018-11-15 15:00:00', '2018-11-15 15:00:30')
Run Code Online (Sandbox Code Playgroud)

给 30,

SELECT TIMESTAMPDIFF(SECOND, '2018-11-15 15:00:55', '2018-11-15 15:00:15')
Run Code Online (Sandbox Code Playgroud)

给:-40


Adi*_*Adi 5

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

SELECT TIMEDIFF(datetime1,datetime2)
Run Code Online (Sandbox Code Playgroud)

如果 datetime1 > datetime2 那么

SELECT TIMEDIFF("2019-02-20 23:46:00","2019-02-19 23:45:00")
Run Code Online (Sandbox Code Playgroud)

给: 24:01:00

和日期时间 1 < 日期时间 2

SELECT TIMEDIFF("2019-02-19 23:45:00","2019-02-20 23:46:00")
Run Code Online (Sandbox Code Playgroud)

给出:-24:01:00

  • 请注意,只能处理相隔最多 839 小时的日期 (3认同)