我想根据日期字段值更新mysql表中的数据。
表包含四个字段(id,file_id,date_of_purchase,错误)。 date_of_purchase和error是varchar字段。
现在,如果日期中的值不是有效日期,我想更新错误字段。我尝试使用STR_TO_DATE()
函数,但在where clause
的
update query
中不起作用
这是我的查询
UPDATE `temp_bulk_upload_data` SET `error`= 'Date of purchase: Date of purchase should be a valid date' WHERE `file_id`='190' AND STR_TO_DATE(`date_of_purchase`, '%m/%d/%Y') IS NULL AND (`date_of_purchase` != '' OR `date_of_purchase` IS NOT NULL)
在此查询中,我收到此错误:
Error in query (1411): Incorrect datetime value: '27/8/2018' for function str_to_date
答案 0 :(得分:1)
在这种情况下,使用正则表达式。 查询
WHERE `date_of_purchase` NOT REGEXP '^(0[1-9]|1[0-2])\\/(0[1-9]|[1-2][0-9]|3[0-1])\\/[0-9]{4}$'
答案 1 :(得分:0)
以STR_TO_DATE
传递的值应为mmddYYYY
格式,或更新STR_TO_DATE
函数的第二个参数以接受ddmmYYYY
格式的日期值。
UPDATE `temp_bulk_upload_data` SET `error`= 'Date of purchase: Date of purchase should be a valid date' WHERE `file_id`='190' AND STR_TO_DATE(`date_of_purchase`, '%d/%m/%Y') IS NULL AND (`date_of_purchase` != '' OR `date_of_purchase` IS NOT NULL)