我需要转换不同字符串的日期。它们有三种不同的方式。
YYYY / MM / DD
毫米/日/年
或空白(可以填写一些默认值)
处理INSERT语句的这种情况的好方法是什么?
答案 0 :(得分:1)
将STR_TO_DATE功能与COALESCE结合使用 - 类似于:
set @strdate := '2014/05/10';
select COALESCE(STR_TO_DATE(@strdate,'%m/%d/%Y'),STR_TO_DATE(@strdate,"%Y/%m/%d"))
答案 1 :(得分:0)
您可以使用MySQL str_to_date()函数。它需要一种格式,如果数据与格式不匹配,则返回NULL。 UseCoalesce with str_to_date with str_to_date,格式似然可能性的降序。
示例如果yyyy / mm / dd比mm / dd / yyyy更常见则使用
COALESCE(STR_TO_DATE(your_date_here,'%Y/%m/%d'),STR_TO_DATE(@strdate,"%m/%d/%Y"))
编辑:这与OndřejŠotek的答案相同,但可能会有性能提升