2013-07-31 57 views
0

我有一個目錄/XX/XX_XX/XX有日期爲YYYYMMDD文件名後匹配系統日期來選擇文件SQL

 
Files20130726.xxx 
Files20130727.xxx 
Files20130728.xxx 
Files20130729.xxx 
Files20130730.xxx 
Files20130731.xxx 

我需要採取系統的當前日期,然後選擇文件的文件列表具有匹配日期

實施例:(系統日期2013年7月31日= File20130731.xxx)

我創建將從目錄中選擇與正確的系統日期的文件的過程

PROCEDURE xxxxxx 
    uu_f_name VARCHAR2(20) := 'Files.xxx';   
    uu_infile utl_file.file_type; 
BEGIN 
    CREATE DIRECTORY NEW_DIRECTORY as '/XX/XX_XX/XX'; 
    uu_infile := utl_file.fopen('/XX/XX_XX/XX', to_date(substr(uu_f_name,6, sysdate), 'YYYYMMDD'), 'MM/DD/YYYY', 'r'); 
  1. 我真的不知道如何申報Files.xxx因爲它實際上FilesYYYYMMDD.xxx(所以不知道如果我可以聲明爲「FilesYYYYMMDD」)

  2. 我停留在如何選擇當前系統日期並將其與正確的文件相匹配。這是我的,但我知道這是不正確的,但我迷失在如何做到這一點。

    to_date(substr(uu_f_name,6, sysdate), 'YYYYMMDD'), 'MM/DD/YYYY', 'r');

+0

你正在使用什麼數據庫?甲骨文? –

+0

是的,我正在使用Oracle – Weber

回答

0

讓自己熟悉:

這裏有很多關於您可以學習的所有這些主題的問題。

的例子,應該讓你開始:

[email protected]> select sysdate from dual; 

SYSDATE 
------------------- 
2013-08-01 07:52:55 

[email protected]> select 'Files.' || to_char(sysdate, 'YYYYMMDD') || '.xxx' as filename from dual; 

FILENAME 
------------------ 
Files.20130801.xxx 

[email protected]> !cat so25.sql 
declare 
    v_filename constant varchar2(32767) := 
    'Files.' || to_char(sysdate, 'YYYYMMDD') || '.xxx'; 
begin 
    dbms_output.put_line('v_filename = ' || v_filename); 
end; 
/
[email protected]> @so25.sql 
v_filename = Files.20130801.xxx 

PL/SQL procedure successfully completed. 

[email protected]> 

之後,我們可以回到你的問題,UTL_FILE如果您有任何。