#mysql#TIMESTAMPDIFF
MySQL新手,发现TIMESTAMPDIFF的坑,大家使用时需要注意啦~~不能和MSSQL的Datediff一样使用。
#天相减时是用的24H作为一天,而不是直接日相减,可以说是更精确了
select TIMESTAMPDIFF(day,'2021-12-25 19:00','2021-12-26 18:00'); #0
select TIMESTAMPDIFF(day,'2021-12-25 18:00','2021-12-26 18:00'); #1
#如果想要得到日相减,舍去时间的话,可以用Datediff函数,或者将日期格式转一下(Date_format('%Y-%m-%d')),或者用Date函数直接到天
select DATEDIFF('2021-12-26 18:00','2021-12-25 19:00') ; #1 注意是第一个参数减第二个参数
select TIMESTAMPDIFF(day,DATE_FORMAT('2021-12-25 19:00','%Y-%m-%d'),DATE_FORMAT('2021-12-26 18:00','%Y-%m-%d')); #1
select TIMESTAMPDIFF(day,DATE('2021-12-25 19:00'),DATE('2021-12-26 18:00')); #1
#月相减时类似
select TIMESTAMPDIFF(month,'2021-02-26 19:00','2021-03-26 18:00'); #0
select TIMESTAMPDIFF(month,'2021-02-26 18:00','2021-03-26 18:00'); #1
#如果想要得到直接月份相减,可以用PERIOD_DIFF函数,或者将日期格式转一下到每个月一号(Date_format('%Y-%m-%01'))
select PERIOD_DIFF(DATE_FORMAT('2021-03-26 18:00','%Y%m'),DATE_FORMAT('2021-02-26 19:00','%Y%m')) ; #1 注意这边必须时%Y%m格式,不可以%Y-%m格式
select TIMESTAMPDIFF(month,DATE_FORMAT('2021-02-26 19:00','%Y-%m-%01'),DATE_FORMAT('2021-03-26 18:00','%Y-%m-%01')); #1
#年相减时也是类似
select TIMESTAMPDIFF(Year,'2020-02-26 19:00','2021-02-26 18:00'); #0
select TIMESTAMPDIFF(Year,'2020-02-26','2021-02-26'); #1
#如果想要得到直接年份相减,可以直接用Year()函数,或者麻烦点将日期格式转一下到每年一月一号
select year('2021-02-26 18:00')-year('2020-02-26 19:00'); #1
-- MySQL小白

浙公网安备 33010602011771号