2013-06-28 25 views
1

我有串临客这样的:Oracle - 从varchar字符串中提取时间戳记?

'Podlaski Oddział Straży Granicznej 
Informacja dobowa o zdarzeniach na terenie województwa podlaskiego 
w dniu 15.04.2013 r.' 

我需要从这个字符串中提取日期:日:15月:4,年份:2013,并把检索到的信息为时间戳(6),像这样:

to_timestamp(v_string) 

..其中v_string检索值(在这种情况下,'13/04/15 ')

什么是正则表达式来做到这一点的最好办法,让'13/04/15' 的结果在这个例子中?

回答

2
SQL> alter session set nls_timestamp_format = 'YYYY-MM-DD HH24:MI:SSXFF'; 

Session altered. 

SQL> with t as (
    2  select 'Podlaski Oddział Straży Granicznej 
    3 Informacja dobowa o zdarzeniach na terenie województwa podlaskiego 
    4 w dniu 15.04.2013 r.' 
    5   as original_string 
    6  from dual) 
    7 select to_timestamp(regexp_substr(original_string, '\d\d\.\d\d\.\d\d\d\d'), 'DD.MM.YYYY') as the_timestamp 
    8 from t; 

THE_TIMESTAMP 
--------------------------------------------------------------------------- 
2013-04-15 00:00:00,000000000 

1 row selected.