【问题标题】:Extract date from string using regular expression - SQL ORACLE使用正则表达式从字符串中提取日期 - SQL ORACLE
【发布时间】:2018-03-20 10:19:12
【问题描述】:

假设我有一个带有字符串“1610131223ZVV40”的字段 numCommande,其中 161013 是 yymmdd 形式的日期。

SQL 中有什么方法可以从字符串字段中提取 13/10/2016 日期?

谢谢!

【问题讨论】:

  • 总是前六个字符吗?如果是这样,则不需要正则表达式,substr()to_date() 就足够了。到目前为止,您尝试过什么?
  • 是的,总是前 6 个字符,谢谢
  • 为什么是 31/10/2016 而不是 13/10/2016?
  • 这是一个错误..再次感谢

标签: sql regex oracle parsing extract


【解决方案1】:

如果“日期”始终是前六个字符,您可以使用普通的substr() 调用来提取那些:

substr(numCommande, 1, 6)

给你'161013';然后将该字符串转换为具有合适格式模型的日期:

select to_date(substr(numCommande, 1, 6), 'RRMMDD') from your_table;

使用静态值的快速演示:

select to_date(substr('1610131223ZVV40', 1, 6), 'RRMMDD') from dual;

TO_DATE(SU
----------
2016-10-13

【讨论】:

  • 赞成使用RR 而不是YY
【解决方案2】:
SELECT TO_CHAR(TO_DATE(SUBSTR(Column_Name,1,6), 'YYMMDD'),'DD/MM/YYYY') FROM TableName

现场演示

http://sqlfiddle.com/#!4/ce715/5

【讨论】:

    猜你喜欢
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    相关资源
    最近更新 更多