MySQL----计算日期相差天数

MYSQL自带函数计算给定的两个日期的间隔天数

1、利用TO_DAYS函数

select to_days(now()) - to_days('20120512')
SELECT TO_DAYS(NOW())-TO_DAYS("2021-10-14")

2、利用DATEDIFF函数

select datediff(now(),'20120512')
select datediff(now(),"2021-10-14")

3、利用TIMESTAMPDIFF函数
计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数,这里主要分享的是通过MySql内置的函数 TimeStampDiff() 实现。
函数 TimeStampDiff() 是MySQL本身提供的可以计算两个时间间隔的函数,语法为:
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)

unit参数

  • FRAC_SECOND 表示间隔是毫秒
  • SECOND 秒
  • MINUTE 分钟
  • HOUR 小时
  • DAY 天
  • WEEK 星期
  • MONTH 月
  • QUARTER 季度
  • YEAR 年
#计算两日期之间相差多少周

select timestampdiff(week,'2011-09-30','2015-05-04');
-- 187 

#计算两日期之间相差多少天

select timestampdiff(day,'2011-09-30','2015-05-04');
-- 1312

另外计算两日期或时间之间相差多少天还可以使用 to_days 函数,但是该函数不用于阳历出现(1582)前的值,原因是当日历改变时,遗失的日期不会被考虑在内。因此对于1582 年之前的日期(或许在其它地区为下一年 ), 该函数的结果实不可靠的。具体用法如:
to_days(end_time) - to_days(start_time);


#计算两日期/时间之间相差的秒数:

select timestampdiff(SECOND,'2011-09-30','2015-05-04');
-- 113356800

另外还可以使用 MySql 内置函数 UNIX_TIMESTAMP 实现,如下:

SELECT UNIX_TIMESTAMP(end_time) - UNIX_TIMESTAMP(start_time); 

你可能感兴趣的:(mysql,sql,数据库)