微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql 计算两个日期之间的天数

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

有两个途径可获得

1、利用TO_DAYS函数

select to_days(Now()) - to_days('20120512')

2、利用DATEDIFF函数

select datediff(Now(),'20120512')

参数1 - 参数2 等于间隔天数

3、利用TIMESTAMPDIFF函数

计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数,这里主要分享的是通过MysqL内置的函数 TimeStampDiff() 实现。

函数 TimeStampDiff() 是MysqL本身提供的可以计算两个时间间隔的函数,语法为:

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)

返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其中unit单位有如下几种,分别是:FRAC_SECOND (microseconds),SECOND,MINUTE,HOUR,DAY,WEEK,MONTH,QUARTER,YEAR 。该参数具体释义如下:

FRAC_SECOND   表示间隔是毫秒
SECOND   秒
MINUTE   分钟
HOUR   小时
DAY   天
WEEK   星期
MONTH   月
QUARTER   季度
YEAR   年

例如:

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

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

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

select timestampdiff(day,'2015-05-04');

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

to_days(end_time) - to_days(start_time);

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

select timestampdiff(SECOND,'2015-05-04');

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

SELECT UNIX_TIMESTAMP(end_time) - UNIX_TIMESTAMP(start_time); 

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

select timestampdiff(MINUTE,'2015-05-04');

另外还可以如下实现:

SELECT SEC_TO_TIME(UNIX_TIMESTAMP(end_time) - UNIX_TIMESTAMP(start_time));

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐