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 的回答相同,但可能会提高性能
我需要转换不同字符串的日期。它们以 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 的回答相同,但可能会提高性能