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

Oracle - trunc(DateTime) between trunc(Sysdate - 104) and trunc(Sysdate - 75)

我想select从 Oracle table 6 月(2017 年 6 月 1 日至 6 月 30 日)的一些数据,开始日期将从明天(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 日之间提供数据,或者那里有语法问题吗?

只需将日期格式转换为 month/year 并与之进行比较。

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

即使您的公式对时间敏感,语法本身也没有问题,这意味着明天它不会return相同的结果。

相反,使用这样的东西:

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

嗨,我认为最准确的是:

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;