作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问候 Stackian Overflowers,
我正在尝试覆盖现有列中的数据,并在已设置的情况下执行 STR_TO_DATE。
代码如下:
SELECT IF(columnA = '../../..' , '0000/00/00' , STR_TO_DATE(columnA, '%m/%d/%Y)
FROM tablename
WHERE extract_date = '2018-12-31';
实际上,我必须使用这个逻辑来更新表格。我试过这个:
UPDATE tablename
IF columnA = '../../..' THEN
SET columnA = '0000-00-00' ELSE
SET columnA = STR_TO_DATE(columnA,'%m/%d/%Y);
在此事上需要任何帮助。
最佳答案
MySQL 的 REGEXP
运算符在这里派上用场:
UPDATE tablename
SET date_col = CASE WHEN columnA REGEXP '[0-9]{2}/[0-9]{2}/[0-9]{4}'
THEN STR_TO_DATE(columnA, '%m/%d/%Y)
ELSE NULL END;
将 columnA
从字符串更新为日期是没有意义的,因为类型不匹配。更好的策略是创建一个新列来存储日期。另外,我建议使用 NULL
,而不是 0000-00-00
来表示无法解析的日期字符串。
请注意,我使用的正则表达式并不是万无一失的,并且不能完全验证您的日期字符串。但它至少应该清除掉真正关闭的字符串数据。
关于MySQL - IF 查询 STR_TO_DATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54095910/
我是一名优秀的程序员,十分优秀!