MySQL 字符串到日期转换为不同的字符串?

MySQL String to Date converting with varying strings?

我需要转换不同字符串的日期。它们以 3 种不同的方式出现。

yyyy/mm/dd

mm/dd/yyyy

空白(可以填一些默认值)

处理 INSERT 语句这种情况的好方法是什么?

将 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"))

您可以使用 MySQL str_to_date() 函数。它需要一种格式,如果数据与格式不匹配,它将 return 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 的回答相同,但可能会提高性能