2013-07-31 32 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如果您有任何。