Oracle - trunc(Sysdate - 104)和trunc(Sysdate - 75)之间的trunc(DateTime)

时间:2017-09-12 17:49:37

标签: oracle sysdate

我想从6月份(2017年6月1日到6月30日)的Oracle表中选择一些数据,开始日期将从明天(9月13日)开始。因此我用以下格式写了一个查询,

select * from table where column1='Data1' and Column2='Data2'
and trunc(DateTime) between trunc(sysdate-104) and trunc(sysdate-75)

我无法检查此查询,因为我没有此工具。我刚刚在记事本中写了这篇文章并希望与我的朋友分享。

我的问题 - trunc(DateTime) between trunc(sysdate-104) and trunc(sysdate-75)条件是否会在6月1日到6月31日期间提供数据或者是否存在任何语法问题?

3 个答案:

答案 0 :(得分:0)

只需将日期格式转换为月/年并与之比较。

select *
from table
where column1 = 'Data1'
and column2 = 'Data2'
and to_char(DateTime, 'MMYYYY') = '062017';

答案 1 :(得分:0)

语法本身没有问题,即使你的表达式是时间敏感的,这意味着明天它不会返回相同的结果。

相反,请使用以下内容:

AND TRUNC(DateTime) BETWEEN to_date('2016-06-01','YYYY-MM-DD')  
                        AND to_date('2016-06-30','YYYY-MM-DD') 

答案 2 :(得分:-1)

嗨,我认为最准确的是:

select * from table where column1='Data1' and Column2='Data2'
    AND DateTime BETWEEN TRUNC(sysdate-104) 
                 AND TRUNC(sysdate-75) 
                 + interval '23' hour 
                 + interval '59' minute 
                 + interval '59' second;