程序員應知應會之MySQL里怎么計算時間日期之差?
本文轉(zhuǎn)載自微信公眾號「活在信息時代」,作者活在信息時代。轉(zhuǎn)載本文請聯(lián)系活在信息時代公眾號。
很多程序員都會用到時間差的應用,比如說計算一個用戶的vip賬戶是否過期之類的,就需要用當前的日期減去用戶注冊的時間,如果大于vip賬戶的有效天數(shù),比如說是30天,那么就把用戶的vip置為無效。
那么這種需求如何用Mysql來實現(xiàn)呢?很多人會想到用當前時間減去原來的時間就行了。那么我們來試試看,比如說我們用當前日期(2022-11-30)減去用戶注冊日期,比如說是2022-11-1。
然后我們來看一下結(jié)果。
咦,出現(xiàn)了一個奇怪的大數(shù)。
那么這個數(shù)是什么呢?原來Mysql對于這種時間直接相減的做法是直接把年月日時分秒拼起來成為一個大數(shù)。
例如2022-11-30 12:15:56,會被拼成是20221130121556,然后另一個日期也是如此,所以就會得出一個奇怪的數(shù)。
那么我們想要做時間相減要什么操作呢?可以用timestampdiff函數(shù)。
它的作用是返回兩個日期時間之間的整數(shù)差。函數(shù)語法分別為:
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
其中unit是返回值的單位,可以用year, month, week, day, hour, minute, second和microsecond。
我們來試一下,例如我們使用:
我們看到結(jié)果是正確的結(jié)果10。
Mysql的時間日期差函數(shù)還有幾個,例如time_diff等,但是最好用的就是timestampdiff,基本上只用這一個函數(shù)就夠了。大家都學會了嗎?