匹配系统日期以选择文件SQL

时间:2013-07-31 17:47:54

标签: sql oracle plsql

我在目录/XX/XX_XX/XX中有一个文件列表,其文件名后的日期为YYYYMMDD

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

我需要获取当前系统日期并选择具有匹配日期的文件

示例:(系统日期7/31/2013 = 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');

1 个答案:

答案 0 :(得分:0)

让自己熟悉:

这里有很多关于你可以学习的所有这些科目的问题。

应该让你入门的例子:

JANI@xe> select sysdate from dual;

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

JANI@xe> select 'Files.' || to_char(sysdate, 'YYYYMMDD') || '.xxx' as filename from dual;

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

JANI@xe> !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;
/
JANI@xe> @so25.sql
v_filename = Files.20130801.xxx

PL/SQL procedure successfully completed.

JANI@xe>

之后,如果您有任何问题,我们可以回复您的UTL_FILE问题。