📅  最后修改于: 2023-12-03 15:33:02.903000             🧑  作者: Mango
在 MySQL 中,我们可以使用 DATEDIFF() 函数来计算日期之间的差异。但如果我们需要以小时为单位计算日期差异怎么办呢?
TIMESTAMPDIFF() 函数可以计算两个日期/时间之间的差异,并以指定的单位返回结果。我们可以使用 TIMESTAMPDIFF() 函数来计算以小时为单位的日期差异。
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
其中,unit 可以是以下任意一种:
datetime_expr1 和 datetime_expr2 分别表示两个日期/时间。注意,它们必须是合法的日期/时间值,否则将返回 NULL。
例如,我们想计算 2021-10-01 10:00:00 和 2021-10-01 12:30:00 之间的差异,以小时为单位。可以使用以下 SQL 语句:
SELECT TIMESTAMPDIFF(HOUR,'2021-10-01 10:00:00','2021-10-01 12:30:00');
运行上述 SQL 语句,将返回以下结果:
2
这意味着两个日期之间的差异为 2 小时。
UNIX_TIMESTAMP() 函数返回从 Unix 纪元(1970-01-01 00:00:00 UTC)到当前日期/时间的秒数。如果我们想计算以小时为单位的日期差异,我们可以先将两个日期转换为 Unix 时间戳,然后再计算它们之间的差异,最后将差异值除以 3600(3600 秒 = 1 小时)即可。
UNIX_TIMESTAMP(datetime_expr)
其中,datetime_expr 表示一个日期/时间。
例如,我们想计算 2021-10-01 10:00:00 和 2021-10-01 12:30:00 之间的差异,以小时为单位。可以使用以下 SQL 语句:
SELECT (UNIX_TIMESTAMP('2021-10-01 12:30:00') - UNIX_TIMESTAMP('2021-10-01 10:00:00')) / 3600;
运行上述 SQL 语句,将返回以下结果:
2.5
这意味着两个日期之间的差异为 2.5 小时。
以上就是在 MySQL 中以小时为单位计算日期差异的两种方法。第一种方法使用 TIMESTAMPDIFF() 函数,更为简单直接;而第二种方法需要使用 UNIX_TIMESTAMP() 函数,稍微有些繁琐。根据具体需求,可以选择适合自己的方法。