【问题标题】:Extract date from string with separator char in Oracle在Oracle中使用分隔符从字符串中提取日期
【发布时间】:2019-12-03 21:11:25
【问题描述】:

我想从具有以下格式的列中提取日期:"text #date" where date is of format "dd.mm.yyyy",分隔符为#。此外,日期未包含在所有记录中或记录为空。谢谢!

【问题讨论】:

    标签: sql oracle date substring


    【解决方案1】:

    您的日期格式包含 10 个字符;所以检查从末尾开始的第 11 个字符是否是分隔符,如果是,则提取日期,否则返回 NULL

    SELECT CASE
           WHEN SUBSTR( your_column, -11, 1 ) = '#'
           THEN TO_DATE( SUBSTR( your_column, -10 ), 'dd.mm.yyyy' )
           ELSE NULL
           END
    FROM   your_table
    

    如果日期可以有一位数的天/月,那么日期不会正好是 10 个字符,那么:

    SELECT CASE
           WHEN INSTR( your_column, '#', -1 ) > 0
           THEN TO_DATE( SUBSTR( your_column, INSTR( your_column, '#', -1 ) + 1 ), 'dd.mm.yyyy' )
           ELSE NULL
           END
    FROM   your_table
    

    db小提琴here

    【讨论】:

      【解决方案2】:

      您也可以通过以下查询提取日期:-

       select to_date (trim(substr(key1 ,instr(key1,'#',1) +1 )),'dd/mm/yyyy' ) date1 from test_table 
          where  instr(key1,'#') > 0;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多