在MySQL中,我們可以通過(guò)字符串轉(zhuǎn)日期來(lái)對(duì)日期進(jìn)行計(jì)算,計(jì)算結(jié)果也可以轉(zhuǎn)換回字符串。
當(dāng)我們從數(shù)據(jù)庫(kù)中查詢到一個(gè)日期,但是該日期的格式并不是MySQL識(shí)別的日期格式(如YYYY-MM-DD),而是字符串形式(如Jun 1 2021),我們就需要通過(guò)STR_TO_DATE()函數(shù)將其轉(zhuǎn)換為MySQL可識(shí)別的日期格式。
SELECT STR_TO_DATE('Jun 1 2021','%M %d %Y');
然而,有時(shí)我們需要計(jì)算兩個(gè)日期之間的天數(shù)或日期間隔,我們可以將日期通過(guò)STR_TO_DATE()函數(shù)轉(zhuǎn)換為MySQL日期格式,然后進(jìn)行日期計(jì)算。計(jì)算出來(lái)的結(jié)果可以通過(guò)DATE_FORMAT()函數(shù)再次轉(zhuǎn)換為字符串格式。
SELECT DATE_FORMAT(STR_TO_DATE('Jun 1 2021','%M %d %Y') - INTERVAL 30 DAY,'%Y.%m.%d');
上面的SQL語(yǔ)句表示將日期2021年6月1日減去30天,然后將計(jì)算結(jié)果轉(zhuǎn)換為“年.月.日”的字符串格式。
除了減去天數(shù),我們還可以對(duì)年、月、日進(jìn)行加減運(yùn)算。
SELECT DATE_FORMAT(STR_TO_DATE('Jun 1 2021','%M %d %Y') + INTERVAL 2 YEAR,'%Y-%m-%d'); SELECT DATE_FORMAT(STR_TO_DATE('Jun 1 2021','%M %d %Y') + INTERVAL 1 MONTH,'%Y-%m-%d'); SELECT DATE_FORMAT(STR_TO_DATE('Jun 1 2021','%M %d %Y') + INTERVAL 15 DAY,'%Y-%m-%d');
上面的三個(gè)SQL語(yǔ)句分別表示將日期2021年6月1日加上2年、1個(gè)月、15天,然后將計(jì)算結(jié)果轉(zhuǎn)換為“年-月-日”的字符串格式。
通過(guò)字符串轉(zhuǎn)日期以及日期加減運(yùn)算,我們可以方便地對(duì)日期進(jìn)行計(jì)算。