列には、「 kontrolrapport-2015.12.23-10.19.05.pdf 」のような名前の特別な種類のファイルの名前が保持されます。日付、つまり「2015-12-23 10:19」を抽出したい。簡単に平和になると思いましたが、理解できるよりも少し時間がかかります.
これは私がどこまで行くかです
select 'kontrolrapport-2015.12.23-10.19.05.pdf' as file_name,
regexp_replace('kontrolrapport-2015.12.23-10.19.05.pdf','(\w*)-', '') as date_like
from dual;
3 に答える
1
あなたの例の正規表現に基づいて、ファイル名に可変プレフィックスがあり、その後にハイフン、日付、時間、ファイル拡張子が続くと想定しています。
各情報を抽出するために使用した正規表現は次のとおりです-
with f as (SELECT 'kontrolrapport-2015.12.23-10.19.05.pdf' AS file_name,
'([^-]+)-([0-9\.]+)-([0-9\.]+)\.([a-z]+)' AS regex
FROM DUAL)
select f.file_name,
regexp_substr (f.file_name, f.regex, 1, 1, 'i', 1) as prefix_part,
regexp_substr (f.file_name, f.regex, 1, 1, 'i', 2) as date_part,
regexp_substr (f.file_name, f.regex, 1, 1, 'i', 3) as time_part,
regexp_substr (f.file_name, f.regex, 1, 1, 'i', 4) as file_extension
from f;
これから始めて、さらに改善してください。[a-z]
and[0-9]
を POSIX クラスに置き換えます。
于 2016-03-21T20:18:23.040 に答える
1
フォーマットが予測可能な場合は、次のことができます。
select to_date(substr('kontrolrapport-2015.12.23-10.19.05.pdf', 16,19), 'YYYY.MM.DD-HH.MI.SS') from dual;
あるいは
select to_date(replace(replace('kontrolrapport-2015.12.23-10.19.05.pdf', 'kontrolrapport-',''),'.pdf','') , 'YYYY.MM.DD-HH.MI.SS') from dual;
質問に示されている文字列としてそれが必要な場合は、上記のいずれかを次のように to_char に含めてみてください。
select to_char(to_date(substr('kontrolrapport-2015.12.23-10.19.05.pdf', 16,19), 'YYYY.MM.DD-HH.MI.SS'), 'YYYY-MM-DD HH:MI')
于 2016-03-21T19:34:44.537 に答える