簡體   English   中英

Oracle中日期的正則表達式

[英]Regular expression on Dates in Oracle

我有所有可能排列的日期格式。 MM / DD / YYYY,M / D / YYYY,MM / D / YYYY,M / DD / YYYY

現在,我需要在Oracle DB中編寫一個正則表達式以按原樣從1列中獲取不同的日期格式。

試試這個:

with t(date_col) as (
select '01/01/2014' from dual
union all
select '1/2/2014' from dual
union all
select '01/3/2014' from dual
union all
select '1/04/2014' from dual
union all
select '11/1/14' from dual)
select date_col,
       case
         when regexp_instr(date_col, '^\d/\d/\d{4}$') = 1 then
          'd/m/yyyy'
         when regexp_instr(date_col, '^\d{2}/\d/\d{4}$') = 1 then
          'dd/m/yyyy'
         when regexp_instr(date_col, '^\d/\d{2}/\d{4}$') = 1 then
          'd/mm/yyyy'
         when regexp_instr(date_col, '^\d{2}/\d{2}/\d{4}$') = 1 then
          'dd/mm/yyyy'
         else
          'Unknown format'
       end date_format
  from t;

DATE_COL   DATE_FORMAT
---------- --------------
01/01/2014 dd/mm/yyyy
1/2/2014   d/m/yyyy
01/3/2014  dd/m/yyyy
1/04/2014  d/mm/yyyy
11/1/14    Unknown format

我不確定您的目標是什么,但是由於總是以月份為首,其次是日,因此無論輸入格式如何,都可以使用以下表達式獲取日期:

 select to_date( column, 'mm/dd/yyyy') from ...

您可以選擇滿足以下條件的所有記錄:

where [column_value] != to_char(to_date([column_value],'MM/DD/YYYY'),'MM/DD/YYYY')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM