在STR_TO_DATE中运行MySQL REGEXP_SUBSTR从文本中提取日期时遇到问题 &g



我在STR_TO_DATE内运行MySQL REGEXP_SUBSTR以从文本字段中提取日期时遇到麻烦。

它可以运行以下查询,并使用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中硬编码日期字符串,我可以正确地将日期字符串转换为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

我一直在为此挣扎。任何指示将不胜感激。谢谢。

感谢大家的帮助!一些评论者对我的代码没有任何问题,但我无法在我最近安装的MySQL版本中工作。我必须完成这项工作,所以我切换到PostgreSQL,没有问题。

尝试先在本地变量中选择日期

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显示两行,所以它是一个烂摊子

BTW:您的原始组合语句适用于10.4.8-MariaDB

最新更新