Mysql中的两列日期求差和取比较值

前言

在mysql的使用中我们经常需要对日期进行操作,比如取两列中的日期相差多少天,相差多少小时,多少月。还有些查询场景中,我们需要取两列中较大的日期值或者较小的日期值,这里来和大家一起复习下。

使用TIMESTAMPDIFF快速求差

相差多少秒

SELECT TIMESTAMPDIFF(SECOND,t.CreateTime,now()) FROM  AudioInfo  t  where 
  t.CreateTime>'2020-06-19 00:00:00' limit 5;

相差多少分

SELECT TIMESTAMPDIFF(MINUTE,t.CreateTime,now()) FROM  AudioInfo  t  where 
  t.CreateTime>'2020-06-19 00:00:00' limit 5;

相差多少小时

SELECT TIMESTAMPDIFF(HOUR,t.CreateTime,now()) FROM  AudioInfo  t  where
   t.CreateTime>'2020-06-19 00:00:00' limit 5;

当然相隔多少天,多少月,几个季度,甚至多少年都是可以的,只需要替换响应的参数为DAY,WEEK,QUARTER,MONTH,YEAR就ok了,这里不一一列举了。

取两列中较大值和较小值

GREAEST函数取最大值

SELECT GREATEST(t.CreateTime,t.TransStartTime),t.CreateTime,t.TransStartTime FROM
  AudioInfo  t  where   t.CreateTime>'2020-06-19 00:00:00' 
and t.TransStartTime is  not null;

LEAST取最小值

SELECT LEAST(t.CreateTime,t.TransStartTime),t.CreateTime,t.TransStartTime FROM
  AudioInfo  t  where   t.CreateTime>'2020-06-19 00:00:00'
 and t.TransStartTime is  not null;

上面都是mysql自带的函数,日常查询中可以使用快速查询统计,但是这些函数的使用可能会导致日期上建立的索引失效,这个在大数据量查询的时候需要注意。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章