MariaDB 函数

MariaDB TIMESTAMPDIFF() 函数返回两个日期或日期时间值的差异。计算差异时,一个参数可以是日期值,另一个参数可以是日期时间值。如有必要,日期值将被处理为时间部分"00:00:00"。结果的单位(整数)由 unit 参数给出。

语法

TIMESTAMPDIFF(unit, datetime1, datetime2) 

参数

datetime1必填。 指定日期或日期时间值。
datetime2必填。 指定日期或日期时间值。
unit必填。 指定差值的单位类型。它可以是以下值之一:
  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR

返回值

返回(datetime2 − datetime1)。结果的单位由 unit 参数给出。

示例 1:

下面的示例显示 TIMESTAMPDIFF()函数的用法 。

SELECT TIMESTAMPDIFF(DAY, '2019-10-15', '2019-10-25');
Result: 10

SELECT TIMESTAMPDIFF(DAY, '2019-10-15 10:20:25', '2019-10-25 12:40:45');
Result: 10

SELECT TIMESTAMPDIFF(HOUR, '2019-10-25 10:20:25', '2019-10-25 12:40:45');
Result: 2

SELECT TIMESTAMPDIFF(MINUTE, '2019-10-25 10:20:25', '2019-10-25 12:40:45');
Result: 140

SELECT TIMESTAMPDIFF(SECOND, '2019-10-25 10:20:25', '2019-10-25 12:40:45');
Result: 8420

SELECT TIMESTAMPDIFF(MICROSECOND, '2019-10-25 10:20:25', '2019-10-25 12:40:45');
Result: 8420000000

SELECT TIMESTAMPDIFF(WEEK, '2018-10-25', '2020-03-25');
Result: 73

SELECT TIMESTAMPDIFF(MONTH, '2018-10-25', '2020-03-25');
Result: 17

SELECT TIMESTAMPDIFF(QUARTER, '2018-10-25', '2020-03-25');
Result: 5

SELECT TIMESTAMPDIFF(YEAR, '2018-10-25', '2020-03-25');
Result: 1 

示例 2:

考虑一个名为 EmployeeLogin 的数据库表,其中包含以下记录:

EmpIDNameLoginStampLogoutStamp
1John2019-10-25 09:20:382019-10-25 17:42:55
2Marry2019-10-25 09:21:052019-10-25 17:43:23
3Jo2019-10-25 09:24:352019-10-25 17:48:56
4Kim2019-10-25 09:25:242019-10-25 17:49:12
5Ramesh2019-10-25 09:27:162019-10-25 17:42:08

要计算LoginStamp列和LogoutStamp列的记录之间的差异,可以使用以下查询:

SELECT *, 
TIMESTAMPDIFF(HOUR, LoginStamp, LogoutStamp) AS TIMESTAMPDIFF_Value
FROM EmployeeLogin; 

这将产生一个结果类似于:

EmpIDNameLoginStampLogoutStampTIMESTAMPDIFF_Value
1John2019-10-25 09:20:382019-10-25 17:42:558
2Marry2019-10-25 09:21:052019-10-25 17:43:238
3Jo2019-10-25 09:24:352019-10-25 17:48:568
4Kim2019-10-25 09:25:242019-10-25 17:49:128
5Ramesh2019-10-25 09:27:162019-10-25 17:42:088