获取控制文件导入的日期列表

时间:2016-08-09 21:36:18

标签: oracle

我需要通过FTP仅从我没有提取数据的日期中获取文件。数据会在每晚发生,但偶尔会出现问题并且会跳过一个晚上,并且会在第二天晚上接收到。 我找到了一个关于StackOverflow的查询,它解决了我的问题的大多数。但是,我留下了一个令人不舒服的解决方案和一个挥之不去的问题。

我有一张表,其中包含每个下载文件的数据。我在这个例子中使用的数据的关键是EXTRACT_DATE。文件格式为filename_20160809.csv,作为示例。使用4位数年份,2位数月份和2位数日制作独特的。 FTP位置有数千个文件,我只想根据这个日期获取新文件。

首先,我从我的表中获取最新的EXTRACT_DATE

SELECT MAX(EXTRACT_DATE) INTO checkDate FROM FILE_DETAILS;

我曾尝试在单个查询中执行此操作,但无法使用它,最后尝试创建变量checkDate,并在后续查询中使用此变量来获取我的列表。但是,不允许在单个脚本中进行两次查询,或者我还没有找到办法。所以我的主要问题是返回最新日期的值。然后使用此参数调用包含值的新查询或过程以获取我的列表

SELECT TO_DATE(checkDate, 'MM/DD/YYYY') + rownum AS EXTRACT_DATES
FROM ALL_OBJECTS
WHERE TO_DATE(checkDate, 'MM/DD/YYYY')  + rownum <= TO_DATE(SYSDATE, 'DD-MM-YY');

这个解决方案很麻烦,不舒服,我宁愿用一个查询来取回我的结果,而不是两个脚本或一个脚本和一个程序。

这个挥之不去的问题,查询的结果以mm / dd / yyyy格式返回日期; 2016年8月9日。我调整了TO_DATE以匹配。 最初,它被设定为YYYY-MM-DD; 2016年8月9日。 但是,它不会以这种格式返回。无论使用的是什么TO_DATE格式,它都会在2016年8月9日返回。我不明白为什么日期会以这种格式回归。

SELECT TO_DATE('2-AUG-2016', 'DD-MON-RR') + rownum AS EXTRACT_DATES
FROM ALL_OBJECTS
WHERE TO_DATE('2-AUG-2016', 'DD-MON-RR')  + rownum <= TO_DATE(SYSDATE, 'DD-MM-YY');

EXTRACT_DATES 2016年8月3日 2016年8月4日 2016年8月5日 2016年8月6日 2016年8月7日 2016年8月8日 2016年8月9日

NLS_DATE_FORMAT设置为DD-MON-RR,美国为NLS_DATE_LANGUAGE。

0 个答案:

没有答案