使用STR_TO_DATE时更新问题

时间:2015-06-25 11:40:44

标签: php mysql sql asp.net database

MySQL数据库的Blogs表包含PostDate列和ErrorMessage列。两者都是字符串数据类型。

现在我需要应用验证,如果PostDatenull,空白,0000-00-00或无法解析'然后应该更新错误信息。

我的查询如下: -

UPDATE Blogs
SET ErrorMessage= 'Post date is Invalid.'
WHERE PostDate IS NULL OR PostDate = '' 
OR PostDate= '0000-00-00' OR  STR_TO_DATE(PostDate, '%Y-%m-%d') IS NULL;

如果postdate包含任何字符串,例如' 16mar'或者' Abc'但是我听说如果STR_TO_DATE函数无法解析日期,它将返回null。 我也使用Select语句进行了测试。哪个工作正常。

SELECT *,STR_TO_DATE(PostDate, '%Y-%m-%d') FROM Blogs
WHERE PostDate IS NULL OR PostDate = '' 
OR PostDate= '0000-00-00' OR STR_TO_DATE(PostDate, '%Y-%m-%d') IS NULL;

我无法理解更新声明中的问题

更新: - 我在更新时得到的错误是: - 错误代码:1411。日期时间值不正确:' 16mar'对于函数str_to_date

1 个答案:

答案 0 :(得分:0)

我使用朋友的帮助解决了这个问题。因为我期待日期总是以特殊格式(YYYY-DD-MM)出现所以我们使用了正则表达式。

UPDATE blogs
    SET ErrorMessage= 'Post date is invalid'
WHERE   (PostDate is null) 
    OR  (PostDate NOT REGEXP '^[1,2][0-9]{3}-[0-9]{2}-[0-9]{2}$');

这帮助我解决了我的问题,但问题仍然没有答案。