MySQL数据库的Blogs
表包含PostDate
列和ErrorMessage
列。两者都是字符串数据类型。
现在我需要应用验证,如果PostDate
为null
,空白,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
答案 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}$');
这帮助我解决了我的问题,但问题仍然没有答案。