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自帶的函數,日常查詢中可以使用快速查詢統計,但是這些函數的使用可能會導致日期上建立的索引失效,這個在大數據量查詢的時候需要注意。

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