如何在Mysql中检查日期是否有效?

时间:2018-10-15 05:36:55

标签: mysql

我想问一下Mysql(日期)

我有一组数据,这些数据的日期使用数据类型varchar 所以我想更新真实表,但是在真实表中数据类型是日期 当我要更新时,它显示这样的错误

  

错误代码:1292   日期值不正确:第1行“ dob”列的日期为“ 1975-11-31”

我意识到日期无效... 那么我应该怎么只获得有效日期呢?

请帮助我。

这是我的查询

UPDATE ori_table a      
INNER JOIN set_of_data dd ON dd.old_id = a.id   
SET a.dob = dd.dob_new   

WHERE a.id IN (SELECT old_id FROM set_of_data    
WHERE status_color = 0    
AND dob_new IS NOT NULL   
AND age != '#VALUE!'   
AND SUBSTRING(dob_new ,6,2) <= 12   
AND SUBSTRING(dob_new ,6,2) >= 01   
AND SUBSTRING(dob_new ,1,4) <= 2018   
AND SUBSTRING(dob_new ,9,2) <= 31   
AND SUBSTRING(dob_new ,9,2) >= 01)   

AND a.dob IS NULL

2 个答案:

答案 0 :(得分:1)

与其检查每个日期的各个部分(以及您将无法使用的日期,因为它仍然允许11月31日或2月30日作为日期),而是检查MySQL是否认为它是有效的。通过DATE传递日期并检查结果是否为非NULL。所以替换

AND SUBSTRING(dob_new ,6,2) <= 12   
AND SUBSTRING(dob_new ,6,2) >= 01   
AND SUBSTRING(dob_new ,1,4) <= 2018   
AND SUBSTRING(dob_new ,9,2) <= 31   
AND SUBSTRING(dob_new ,9,2) >= 01

使用

AND DATE(dob_new) IS NOT NULL

答案 1 :(得分:0)

MySQL的dob_new类型日期吗?如果是,为什么不使用dob_new between '2018-01-01' and '2018-12-31'