新聞中心
本文轉(zhuǎn)載自微信公眾號(hào)「活在信息時(shí)代」,作者活在信息時(shí)代。轉(zhuǎn)載本文請(qǐng)聯(lián)系活在信息時(shí)代公眾號(hào)。

嘉陵網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)于2013年開(kāi)始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
很多程序員都會(huì)用到時(shí)間差的應(yīng)用,比如說(shuō)計(jì)算一個(gè)用戶的vip賬戶是否過(guò)期之類的,就需要用當(dāng)前的日期減去用戶注冊(cè)的時(shí)間,如果大于vip賬戶的有效天數(shù),比如說(shuō)是30天,那么就把用戶的vip置為無(wú)效。
那么這種需求如何用Mysql來(lái)實(shí)現(xiàn)呢?很多人會(huì)想到用當(dāng)前時(shí)間減去原來(lái)的時(shí)間就行了。那么我們來(lái)試試看,比如說(shuō)我們用當(dāng)前日期(2022-11-30)減去用戶注冊(cè)日期,比如說(shuō)是2022-11-1。
select now()-'2022-11-5';
然后我們來(lái)看一下結(jié)果。
咦,出現(xiàn)了一個(gè)奇怪的大數(shù)。
那么這個(gè)數(shù)是什么呢?原來(lái)Mysql對(duì)于這種時(shí)間直接相減的做法是直接把年月日時(shí)分秒拼起來(lái)成為一個(gè)大數(shù)。
例如2022-11-30 12:15:56,會(huì)被拼成是20221130121556,然后另一個(gè)日期也是如此,所以就會(huì)得出一個(gè)奇怪的數(shù)。
那么我們想要做時(shí)間相減要什么操作呢?可以用timestampdiff函數(shù)。
它的作用是返回兩個(gè)日期時(shí)間之間的整數(shù)差。函數(shù)語(yǔ)法分別為:
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
其中unit是返回值的單位,可以用year, month, week, day, hour, minute, second和microsecond。
我們來(lái)試一下,例如我們使用:
select timestampdiff(month, '2022-1-1', curdate());
我們看到結(jié)果是正確的結(jié)果10。
Mysql的時(shí)間日期差函數(shù)還有幾個(gè),例如time_diff等,但是最好用的就是timestampdiff,基本上只用這一個(gè)函數(shù)就夠了。大家都學(xué)會(huì)了嗎?
分享文章:程序員應(yīng)知應(yīng)會(huì)之MySQL里怎么計(jì)算時(shí)間日期之差?
鏈接分享:http://m.fisionsoft.com.cn/article/dhcsche.html


咨詢
建站咨詢
