我想从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日期间提供数据或者是否存在任何语法问题?
答案 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;