我在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