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

whhtz7ly  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(509)

我想问一下mysql(日期)
我有一个数据集,它有一个使用varchar数据类型的日期,所以我想更新实表,但是在实表中,数据类型是date,当我想更新时,它会显示如下错误
错误代码: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
6qfn3psc

6qfn3psc1#

而不是像你现在这样单独检查日期的所有部分(你所拥有的将不起作用,因为它仍然允许11月31日或2月30日作为一个日期),只需通过传递它来检查mysql是否认为它是一个有效的日期 DATE 以及检查非空结果。所以更换

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
7ivaypg9

7ivaypg92#

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

相关问题