我需要一个查询来从teradata中的注解字符串获取日期,而不考虑其位置

gpfsuwkq  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(267)

示例:注解为“drop table on 12-09-2010”或注解为“12-09-2010”或注解为“drop 12-09-2010”
答案应该是日期格式,而不管字段在teradata中的位置如何

wz3gfoph

wz3gfoph1#

您可以使用regxp\u substr。根据您的mm dd yyyy日期格式,它应该是:

regexp_substr(<your column>,'((0|1)\d{1})-((0|1|2)\d{1})-((19|20)\d{2})')

编辑:这里有一个稍微好一点的正则表达式,它将更接近于处理无效日期。我不认为任何正则表达式都能告诉你,像2020-02-30这样的日期是不合法的。

regexp_substr(some_col,'(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])-[0-9]{4}')
t9aqgxwy

t9aqgxwy2#

我认为没有“从字符串提取日期”函数。你需要把字符串分开:strtok(col,'delim',1),strtok(col,'delim',2),strtok(col,'delim',3)
或者查看:regexp\u split\u to\u表

相关问题