0

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

年年/月/日

月/日/年

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

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

4

2 回答 2

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"))
于 2015-07-15T19:38:57.970 回答
0

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

于 2015-07-15T19:46:06.620 回答