MySQL是否提供验证日期有效性的函数?例如,在提供无效日期2013-02-30时,DATE
函数返回NULL
。但是,我也同时使用STR_TO_DATE
,这会神秘地阻止DATE
正常工作。MySQL日期有效性
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
停止DATE
的功能,并且有一些变通方法,以验证是否使用日期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)))
。
中的格式
a priori
请提供更多的上下文:您尝试验证的数据流是什么? – wallyk@wallyk可以任意格式化的日期应该首先传递给STR_TO_DATE函数及其格式,并且应该有效验证其有效性。刚刚解决了问题,请参阅编辑。 – user2180613
如果您从某个数据库字段中提取日期,则您已经知道它是NULL或有效。你为什么要验证它? – wallyk