簡體   English   中英

如何在mysql查詢的where子句中檢查存儲在varchar字段中的日期是否為有效日期?

[英]How to check if date stored in varchar field is a valid date or not in where clause of mysql query?

我想根據日期字段值更新 mysql 表中的數據。

表包含四個字段(id、file_id、date_of_purchase、error)。 date_of_purchase 和 error 是 varchar 字段。

現在,如果日期中的值不是有效日期,我想更新錯誤字段。 我嘗試使用STR_TO_DATE()函數,但它在update query中的where clause中不起作用

這是我的查詢

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

在這種情況下使用正則表達式。 詢問

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

STR_TO_DATE傳遞的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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM