ORACLE PL/SQL-使用SYSDATE检索特定日期的数据时出现检索问题
目标:每当使用SYSDATE检索特定日期的数据时,我都没有获得正确的数据 到目前为止,我所做的是:我创建了一个包含以下字段的表 销售|日期|销售| Id |名称|加载|日期 该表包含数千条记录。如果我想看一周前的销售细节。我使用以下查询ORACLE PL/SQL-使用SYSDATE检索特定日期的数据时出现检索问题,sql,oracle,scheduled-tasks,Sql,Oracle,Scheduled Tasks,目标:每当使用SYSDATE检索特定日期的数据时,我都没有获得正确的数据 到目前为止,我所做的是:我创建了一个包含以下字段的表 销售|日期|销售| Id |名称|加载|日期 该表包含数千条记录。如果我想看一周前的销售细节。我使用以下查询 SELECT TRUNC(sales_Date),SUM(sales_ID) FROM sales_DB WHERE sales_Date BETWEEN TRUNC(SYSDATE-7) AND TRUNC(SYSDATE) GROUP BY TRUNC
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)
上面的查询列出了列表顺序中的一些详细信息(7天内的销售Id之和)。但是
如果我想检索一个特定日期的数据(让我考虑2天),
上面的查询显示了我在查询中提到的特定数据的_sales _Id u的总和,以及属于第二天的数据
简而言之,如果我想检索前天发生的销售详细信息,那么每当我试图检索时,昨天发生的一些数据就会重叠
甚至我们也尝试了数字格式,如“2016年10月12日上午12.00.00.000000”和“2016年10月12日下午11.59.59.99900” 由于我们使用的是任务调度,因此无法进行手动检索。它必须在.bat文件中安排一次。任务每天都会被触发
是否有任何解决方案可以使用sysdate避免这些数据重叠。或者是否有任何其他替代方法来检索特定日期的数据。between是有效的。改变
WHERE sales_Date
BETWEEN TRUNC(SYSDATE-2) AND TRUNC(SYSDATE-1)
到
WHERE sales\u Date
>=TRUNC(SYSDATE-2)和sales_Date
中间是包含的。改变
WHERE sales_Date
BETWEEN TRUNC(SYSDATE-2) AND TRUNC(SYSDATE-1)
到
WHERE sales\u Date
>=TRUNC(SYSDATE-2)和sales_Date
其中trunc(sales_-date)=trunc(sysdate-1)尝试trunc(sysdate-2)和trunc(sysdate-1)-1/24/60/60之间的sales_-date列的数据类型是什么?@Boneist TIMESTAMP是我们提到的sales_-date字段的数据类型。@Rene=没有产生正确的结果。这就是为什么我们在trunc(sysdate-2)和trunc(sysdate-1)之间进行选择,其中trunc(sales_date)=trunc(sysdate-1)在trunc(sysdate-2)和trunc(sysdate-1)之间尝试-1/24/60/60
sales_date列的数据类型是什么?@Boneist TIMESTAMP是我们提到的sales_date字段的数据类型。@Rene=未产生正确的结果。这就是我们在trunc(sysdate-2)和trunc(sysdate-1)之间选择的原因。我刚刚要发布这个答案。我总是使用后一种说法,因为中间的说法很容易让人厌烦。谢谢你抽出时间。我们已经试过了,它工作正常。我们非常感谢你的努力。现在我们可以在没有任何重叠的情况下检索到准确的数据了。我正要发布这个答案。我总是使用后一种说法,因为中间的说法很容易让人厌烦。谢谢你抽出时间。我们已经试过了,它工作正常。我们非常感谢你的努力。现在,我们能够检索到准确的数据,而没有任何重叠。
WHERE sales_Date
>= TRUNC(SYSDATE-2) and sales_Date < TRUNC(SYSDATE-1)