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