如何将无效的字符串格式日期值转换为null

时间:2016-07-25 13:04:39

标签: mysql sql

我有字符串列,我想将字段转换为日期。

我正在尝试以下查询,但收到错误:

select cast('20160532' as date) AS dt;

当我选择输出时为null因为32不是日期,但是当我将此记录插入表时它会出错:

  

“错误的日期值20160532”

2 个答案:

答案 0 :(得分:1)

尝试使用STR_TO_DATE() - 当字符串格式不正确时,它会返回NULL

SELECT STR_TO_DATE('20160532', '%Y,%m,%d') 

答案 1 :(得分:0)

http://sqlfiddle.com/#!9/cd8338/1

INSERT INTO t (my_date) VALUES
(IF((@d :=  STR_TO_DATE('20160532', '%Y%m%d')) IS NULL, null, @d));

INSERT INTO t (my_date) VALUES
(IF((@d :=  STR_TO_DATE('20160525', '%Y%m%d')) IS NULL, null, @d));