一、函数介绍
要计算时间差,我们需要用到MySQL的两个函数:
DATEDIFF(date1, date2)
TIMESTAMPDIFF(unit, datetime1, datetime2)
DATEDIFF函数返回两个日期之间的天数差。
TIMESTAMPDIFF函数返回两个日期之间的时间差,可以由参数unit指定,如YEAR、MONTH、DAY、HOUR、MINUTE、SECOND等。
二、计算两个日期之间相差的天数
我们可以使用DATEDIFF函数直接计算两个日期之间相差的天数。
SELECT DATEDIFF('2019-08-01', '2019-07-01') AS day_diff;
运行结果为1,表示2019-08-01与2019-07-01相差一天。
三、计算两个日期时间之间相差的天数
如果我们要计算两个日期时间间隔的天数,就需要用到TIMESTAMPDIFF函数。
SELECT TIMESTAMPDIFF(DAY, '2019-08-01 12:40:00', '2019-08-03 23:11:00') AS day_diff;
运行结果为2,表示2019-08-01 12:40:00与2019-08-03 23:11:00相差两天。
四、计算两个日期时间之间相差的小时数和分钟数
我们只需将上方SQL语句中的DAY改为HOUR和MINUTE,并分别执行,即可得到两个时间之间相差的小时数和分钟数。
SELECT TIMESTAMPDIFF(HOUR, '2019-08-01 12:40:00', '2019-08-03 23:11:00') AS hour_diff;
SELECT TIMESTAMPDIFF(MINUTE, '2019-08-01 12:40:00', '2019-08-03 23:11:00') AS minute_diff;
运行结果分别为59和1551,表示2019-08-01 12:40:00与2019-08-03 23:11:00相差59小时和1551分钟。
五、处理时间戳
如果我们有一个UNIX时间戳,需要将其转换为日期或时间,也有相应的MySQL函数可以使用。
SELECT DATE_FORMAT(FROM_UNIXTIME(1565117223), '%Y-%m-%d %H:%i:%s') AS date_time;
运行结果为2019-08-06 10:20:23,表示将时间戳1565117223转换为日期时间格式。
六、使用时间函数
如果我们需要在SQL中使用当前时间,可以使用NOW()函数,它返回当前日期和时间,格式为YYYY-MM-DD HH:MM:SS
SELECT NOW() AS current_time;
运行结果为当前时间。
七、总结
MySQL提供了丰富的函数来计算日期和时间之间的差别,使得我们能够高效地进行数据处理和分析。
使用日期函数需要注意各种日期格式,如YY-MM-DD、YYYY-MM-DD、YYYY-MM-DD HH:MM:SS等。