MySQL是否提供任何验证日期有效性的功能?例如,该DATE
函数NULL
在提供无效日期 2013-02-30 时返回。但是,我也在STR_TO_DATE
同时使用,它神秘地停止DATE
正常工作。
SELECT DATE('2013-02-30'); NULL
SELECT STR_TO_DATE('2013-02-30', '%Y-%m-%d'); NOT NULL
SELECT DATE('2013-02-40'); NULL
SELECT STR_TO_DATE('2013-02-40', '%Y-%m-%d'); NULL
SELECT DATE(STR_TO_DATE('2013-02-30', '%Y-%m-%d')); NOT NULL
为什么STR_TO_DATE
haltDATE
的功能,是否有一些解决方法来验证使用时日期是否有效STR_TO_DATE
(我有义务使用)?
与此同时,我偶然发现了答案:DATE
当数据类型已经是“日期”(STR_TO_DATE
将字符串转换为日期数据类型)时,该函数显然会跳过一些验证检查。因此,在使用 将日期解析为正确格式后,将日期转换为字符串,就可以STR_TO_DATE
了:
@valid_date = NOT ISNULL(DATE(CONVERT(STR_TO_DATE('2013-02-29', '%Y-%m-%d'), CHAR)))
.