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

How to Check in Mysql either the date is valid or not?

我想问一下Mysql(日期)

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

Error Code: 1292
Incorrect date value: '1975-11-31' for column 'dob' at row 1

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

请帮帮我..

这是我的查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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


不要像你一样单独检查日期的所有部分(你不会工作,因为它仍然允许 11 月 31 日或 2 月 30 日作为日期),只需检查 MySQL 是否认为它是有效的通过 DATE 传递日期并检查非 NULL 结果。所以替换

1
2
3
4
5
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

1
AND DATE(dob_new) IS NOT NULL


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