2017-09-12 12 views
0

6月のOracleテーブル(6月1日から2017年6月30日)からデータを選択したい場合、開始日は明日から(9月13日)。そこで私は、このためのツールを持っていないとして、このクエリをチェックすることはできないんだけど、以下の形式でtrunc(Sysdate-104)とtrunc(Sysdate-75)の間のOracle-trunc(DateTime)

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

配合が時間に敏感な場合でも問題ありません。明日は同じ結果が返されません。

代わりに、このようなもので行く:

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

返事をありがとう。テーブルの日付の列が 'Jun-01-2017'または別の形式の場合、 '2017-06-01'と '2016-06-30'は問題を作成しますか? –

+1

列にDATE形式がある場合は、問題ではありません。私は明示的な日付形式で私の答えをajustします。 – Dessma

+0

@dessma、どうやって2016-06-30 23:59:59 ?! –

0

日付形式を月/年にキャストして比較するだけです。

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

感謝。上記のクエリを実行すると、6月の完全なデータが取得されますか? –

-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; 
関連する問題