在MySQL中,我们可以通过字符串转日期来对日期进行计算,计算结果也可以转换回字符串。
当我们从数据库中查询到一个日期,但是该日期的格式并不是MySQL识别的日期格式(如YYYY-MM-DD),而是字符串形式(如Jun 1 2021),我们就需要通过STR_TO_DATE()函数将其转换为MySQL可识别的日期格式。
SELECT STR_TO_DATE('Jun 1 2021','%M %d %Y');
然而,有时我们需要计算两个日期之间的天数或日期间隔,我们可以将日期通过STR_TO_DATE()函数转换为MySQL日期格式,然后进行日期计算。计算出来的结果可以通过DATE_FORMAT()函数再次转换为字符串格式。
SELECT DATE_FORMAT(STR_TO_DATE('Jun 1 2021','%M %d %Y') - INTERVAL 30 DAY,'%Y.%m.%d');
上面的SQL语句表示将日期2021年6月1日减去30天,然后将计算结果转换为“年.月.日”的字符串格式。
除了减去天数,我们还可以对年、月、日进行加减运算。
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,'%M %d %Y') + INTERVAL 15 DAY,'%Y-%m-%d');
上面的三个SQL语句分别表示将日期2021年6月1日加上2年、1个月、15天,然后将计算结果转换为“年-月-日”的字符串格式。
通过字符串转日期以及日期加减运算,我们可以方便地对日期进行计算。