在STR_TO_DATE中运行MySQL REGEXP_SUBSTR以从文本字段中提取日期时遇到问题。
If可以运行以下查询,并使用REGEXP_SUBSTR正确提取日期字符串。
SELECT REGEXP_SUBSTR('12/9/97 - Ependymoma!', '[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2}');
# '12/9/97'
如果我用STR_TO_DATE对日期字符串进行硬编码,就可以将日期字符串正确地转换为日期。
SELECT STR_TO_DATE('12/9/97', '%m/%d/%y');
# '1997-12-09'
但是,如果我在STR_TO_DATE中调用REGEXP_SUBSTR,它将返回NULL。
SELECT STR_TO_DATE(REGEXP_SUBSTR('12/9/97 - Ependymoma!', '[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2}'), '%m/%d/%y');
# NULL
我一直在努力解决这个问题。任何方向都将不胜感激。谢谢。
发布于 2021-02-20 03:34:28
感谢大家的帮助!一些评论者对我的代码没有问题,但我无法在我最近安装的MySQL版本中使用它。我必须完成这项工作,所以我切换到PostgreSQL,没有任何问题。
发布于 2021-02-19 01:43:10
尝试先在局部变量中选择日期
SELECT @tmp := REGEXP_SUBSTR('12/9/97 - Ependymoma!', '[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2}')
SELECT STR_TO_DATE(@tmp, '%m/%d/%y');
我也发布了一个answer
,因为我不能让comment
显示两行,所以它很混乱
顺便说一句:您最初的组合语句在10.4.8-MariaDB
上运行良好
https://stackoverflow.com/questions/66261419
复制相似问题