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;
我想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;