如何在不指定MySQL格式的情况下检查字符串是否为有效日期。用户可以输入以下格式;
21-08-2013
21/08/2013
2013/08/21
21jan2018
我事先并不知道用户可以输入的格式。 我试过了:
选择str_to_date()但在这里我需要指定我不想要的格式。 我只是想检查一个字符串是否是有效日期而没有指定格式。
请建议。 感谢
答案 0 :(得分:1)
您在问题中向我们展示的所有四个日期字符串都可以使用STR_TO_DATE
和适当的格式掩码转换为MySQL日期。因此,您应该能够简单地检查这些日期模式,如果您想知道是否可以将它们转换为日期:
SELECT *
FROM yourTable
WHERE
col REGEXP '[0-9]{2}-[0-9]{2}-[0-9]{4}' OR
col REGEXP '[0-9]{2}/[0-9]{2}/[0-9]{4}' OR
col REGEXP '[0-9]{4}/[0-9]{2}/[0-9]{2}' OR
col REGEXP '[0-9]{2}[A-Z]{3}[0-9]{4}';