我想问一下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
2条答案
按热度按时间6qfn3psc1#
而不是像你现在这样单独检查日期的所有部分(你所拥有的将不起作用,因为它仍然允许11月31日或2月30日作为一个日期),只需通过传递它来检查mysql是否认为它是一个有效的日期
DATE
以及检查非空结果。所以更换具有
7ivaypg92#
是
dob_new
mysql的类型和日期?如果是,你为什么不用dob_new between '2018-01-01' and '2018-12-31'