2017-02-27 98 views
0

更改MySQL的日期格式我试图让下面的查询工作,但0行受到了影响:通过更新

UPDATE table_x 
SET sql_date = DATE(STR_TO_DATE(date_string,'%Y-%m-%d')) 
WHERE sql_date = '0000-00-00' 

列DATE_STRING日期​​格式为:“%d%M%Y。”

我在做什么错? 谢谢

+0

“之列DATE_STRING日期​​格式为: '%d%M%Y。'” - 那你为什么在查询中使用''%Y-%间%D''? –

+0

f ....我想我必须使用目标格式。但当然这是一个愚蠢的想法。谢谢你的提示。 – benny

回答

1

你的列date_string已经是“yyyy-dd-mm”,那你为什么要更新。 你仍然可以比较日期按如下:

UPDATE table_x set sql_date = DATE(STR_TO_DATE(date_string,'%Y-%m-%d')) 
WHERE date(sql_date) = '0000-00-00'; 

所以它会跳过时间戳和比较你的通行证迄今为止,只有日期。 日期函数将只从存储的日期获取日期。所以如果“1992-11-06 00:00:00”存储在数据库中,那么它只会比较“1992-11-06”。

0

你说date_string的格式是'%d.%m.%Y'。但是,您错误地将'%Y-%m-%d'指定为STR_TO_DATE。此外,当您将字符串转换为日期时,您在此日期应用DATE。为什么?

UPDATE table_x 
SET sql_date = STR_TO_DATE(date_string, '%d.%m.%Y') 
WHERE sql_date = '0000-00-00'; 
+0

谢谢。就像保罗西格尔评论的那样。我没有用足够的小脑袋。 – benny