ORACLE PL / SQL - 使用SYSDATE检索特定日期

时间:2016-11-29 12:41:39

标签: sql oracle scheduled-tasks

目标:每当我使用SYSDATE检索特定日期的数据时,我都没有获得正确的数据。

到目前为止我做了什么:我创建了一个包含以下字段的表 sales_Date | sales_Id |名称| Load_Date

该表包含数千条记录。如果我想看一周的销售细节。我使用以下查询,

SELECT TRUNC(sales_Date),SUM(sales_ID) 
FROM sales_DB 
WHERE sales_Date 
BETWEEN TRUNC(SYSDATE-7) AND TRUNC(SYSDATE)
GROUP BY TRUNC(sales_Date)

以上查询以列表顺序列出一些详细信息(其中_sales_Id_的总和为7天)。但, 如果我想检索特定日期的数据(让我考虑2天后),

SELECT TRUNC(sales_Date),SUM(sales_ID) 
FROM sales_DB 
WHERE sales_Date 
BETWEEN TRUNC(SYSDATE-2) AND TRUNC(SYSDATE-1)
GROUP BY TRUNC(sales_Date)

以上查询显示_sales_Id_的总和,用于我在查询中提到的特定数据,以及属于第二天的数据

简而言之,如果我想检索前天发生的销售详情,昨天发生的的一些数据是重叠 < / strong>每当我尝试检索它时。

即使我们也尝试过数字格式,如
&#39; 12-OCT-16 12.00.00.000000 AM&#39; AND&#39; 12-OCT-16 11.59.59.999000 PM,

由于我们使用任务计划,我们无法进行手动检索。它必须在 .bat 文件中安排一次。每天都会触发任务。

是否有任何解决方案可以使用 sysdate 来避免这些重叠数据。或者是否有任何其他方法来检索特定日期的数据。

1 个答案:

答案 0 :(得分:2)

两者之间是侮辱性的。变化

WHERE sales_Date 
BETWEEN TRUNC(SYSDATE-2) AND TRUNC(SYSDATE-1)

WHERE sales_Date 
>= TRUNC(SYSDATE-2) and sales_Date < TRUNC(SYSDATE-1)