sql - 我需要一个查询来从 teradata 中的评论字符串中获取日期,无论其位置如何
问题描述
例如:评论是“Drop table on 12-09-2010”或评论是“12-09-2010”或评论是“Drop 12-09-2010”
答案应该是日期格式,无论字段位置在 teradata 中的位置
解决方案
您可以使用REGXP_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}')
推荐阅读
- angular - 带有自定义 Content-Type 标头的 NbAuthService 身份验证请求
- ruby-on-rails - 在 Rails 6.0.0.beta1 中使用 Paper Trail
- java - 无法检索孩子下的所有计数
- java - 如何修复此代码中的错误以及如何从 for 循环更改为递归?我是编程初学者:)
- java - 如何解决 rg.glassfish.jersey.server.model.ModelValidationException
- android - 蓝牙导致 NPE
- vim - VIM如何删除前导^G
- c - C中的接口
- ios - 可见部分调用 insertSections 上的 viewForHeaderInSection
- autohotkey - 为什么我对 WinGetTitle 的调用返回一个空字符串?