我尝试让以下查询起作用,但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 :(得分:0)
您的列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"存储在DB中,然后它将只比较" 1992-11-06"。
答案 1 :(得分: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';