php—如何在mysql查询的where子句中检查varchar字段中存储的日期是否有效?

qhhrdooz  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(257)

我想根据日期字段值更新mysql表中的数据。
表由四个字段组成(id、文件id、购买日期、错误)。购买日期和错误是varchar字段。
现在,如果date中的值不是有效日期,我想更新error字段。我试过了 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
klr1opcd

klr1opcd1#

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

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

gdrx4gfi2#

传入的值 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)

相关问题