首页 > 解决方案 > 如何检查存储在varchar字段中的日期是否是mysql查询的where子句中的有效日期?

问题描述

我想根据日期字段值更新 mysql 表中的数据。

表由四个字段(id、file_id、date_of_purchase、error)组成。date_of_purchase 和 error 是 varchar 字段。

现在,如果日期中的值不是有效日期,我想更新错误字段。我尝试了功能,STR_TO_DATE()但它不起作用where clauseupdate 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

标签: phpmysql

解决方案


在这种情况下使用正则表达式。 询问

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}$'

推荐阅读