我在目录/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');
我真的不知道如何声明Files.xxx,因为它实际上是FilesYYYYMMDD.xxx(因此不确定我是否可以将其声明为'FilesYYYYMMDD')
我被困在如何选择当前系统日期并将其与正确的文件匹配。这就是我所拥有的,但我知道这不正确,但我对如何做到这一点很遗憾。
to_date(substr(uu_f_name,6, sysdate), 'YYYYMMDD'), 'MM/DD/YYYY', 'r');
答案 0 :(得分:0)
让自己熟悉:
to_char
和to_date
函数将字符串转换为日期和其他方式。concat
function and ||
operator连接字符串。这里有很多关于你可以学习的所有这些科目的问题。
应该让你入门的例子:
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
问题。