从VARCHAR字符串ORacle中提取日期

时间:2014-06-02 10:37:06

标签: regex oracle date plsql timestamp

我正在尝试基于日期戳在表格中大量删除数据。但是,日期戳被写入表中以及其他东西的加载,并且模式不同,所以我不能使用SUBSTR或任何类似的字符串操作函数,我认为我唯一的选择是使用REGEXP_SUBSTR。不幸的是,我不熟悉REGEXP语法,而且运气不好。

基本上,我的字符串包含以下字符串中的日期:

GKKPACT  -  30-MAY-2014:16:39:13
GKKPACT  -  30-MAY-2014:16:39:13
GKKPACT  -  30-MAY-2014:16:39:13
v_chldcnt - 30-MAY-2014:16:39:26
v_chldcnt - 30-MAY-2014:16:39:26

我只需要从上面的字符串中提取日期,这样我就可以根据sysdate执行删除。

任何想法regexp语法可能是做什么的?我在堆栈溢出(Oracle - extract timestamp from varchar string?)上发现了类似的请求 - 我已经尝试修改此示例中的语法,但没有成功使其工作。

TIA

哈斯基。

1 个答案:

答案 0 :(得分:1)

extract,您的意思是:

DECLARE
    match VARCHAR2(255);
BEGIN
    match := REGEXP_SUBSTR(subject, '\d{2}-\w{3}-\d{4}', 1, 1, 'im');
END;

解释正则表达式

\d{2}                    # digits (0-9) (2 times)
-                        # '-'
\w{3}                    # word characters (a-z, A-Z, 0-9, _) (3
                         # times)
-                        # '-'
\d{4}                    # digits (0-9) (4 times)