MySQL中有三種日期類型:DATE、DATETIME和TIMESTAMP。其中,DATE是指年月日,沒(méi)有時(shí)間;DATETIME是指年月日和時(shí)分秒,精確到秒;TIMESTAMP同樣有年月日和時(shí)分秒,但是精確到微秒級(jí)別。
在對(duì)DATE類型進(jìn)行計(jì)算時(shí),我們可以使用DATE_SUB()和DATE_ADD()函數(shù)。比如說(shuō),我們要將某個(gè)日期往前推5天,可以使用以下代碼:
SELECT DATE_SUB('2021-01-01', INTERVAL 5 DAY);
這樣就能得到2020-12-27這個(gè)日期。
如果想要在DATE類型的基礎(chǔ)上加上時(shí)間計(jì)算,可以使用CAST()函數(shù)將DATE類型轉(zhuǎn)換為DATETIME類型。比如說(shuō),我們要在2021-01-01的基礎(chǔ)上加上2小時(shí):
SELECT CAST('2021-01-01' AS DATETIME) + INTERVAL 2 HOUR;
這樣就能得到2021-01-01 02:00:00這個(gè)DATETIME類型的時(shí)間。
如果要對(duì)DATETIME類型進(jìn)行計(jì)算,可以使用DATE_SUB()和DATE_ADD()函數(shù),同樣的用法和上面的例子。
最后是TIMESTAMP類型。TIMESTAMP類型是從1970年1月1日開(kāi)始計(jì)算的,精確到秒或微秒級(jí)別。可以使用UNIX_TIMESTAMP()函數(shù)將TIMESTAMP類型轉(zhuǎn)換為UNIX時(shí)間戳。如果需要在UNIX時(shí)間戳和DATETIME類型之間進(jìn)行轉(zhuǎn)換,可以使用FROM_UNIXTIME()和UNIX_TIMESTAMP()函數(shù)。比如說(shuō):
SELECT UNIX_TIMESTAMP(), FROM_UNIXTIME(1621317887);
第一個(gè)函數(shù)得到的是當(dāng)前的UNIX時(shí)間戳,第二個(gè)函數(shù)將UNIX時(shí)間戳2021-05-18 01:11:27轉(zhuǎn)換為DATETIME類型。