STR_TO_DATE返回两位年份的未来日期

时间:2018-11-06 10:27:19

标签: mysql sql date datetime

我有一个SQL表,其日期格式为12/9/66(英国日期格式,dd / mm / yy)。当我使用时:

UPDATE players SET dateOfBirth = STR_TO_DATE('12/9/66','%d/%m/%y')

它将日期设置为2066-09-12

很明显,我希望它是1966-09-12。如何获取正确的日期?

1 个答案:

答案 0 :(得分:2)

您可以检查STR_TO_DATE是否导致将来的日期(why),然后减去100年:

UPDATE players
SET dateOfBirth = STR_TO_DATE('12/9/66','%d/%m/%y') - INTERVAL (
    CASE WHEN STR_TO_DATE('12/9/66','%d/%m/%y') <= CURRENT_DATE THEN 0 ELSE 100 END
) YEAR