2016-06-16 12 views
0

DB2データベースにフィルタ条件を追加しようとしています。私はそれが初めてで、Oracleの背景から来ています。私は今日の午前4時と今日の午後5時の間の日付のレコードを取得しようとしています。IBM DB2の特定の時間帯にあるデータを取得するためにフィルタリングする方法

db2 => select datetimeColumn from datetimeExample WHERE datetimeColumn BETWEEN timestamp(current date) - 1 day + 4 hour AND timestamp(current date) - 1 day + 13 hour 

DATETIMECOLUMN 
-------------------------- 

0 record(s) selected. 

そして、ここで私は信じて、テーブル内のデータが表示されるはずですが、条件文に何か問題があり、任意のヘルプは

db2 => select * from datetimeExample 

DATETIMECOLUMN 
-------------------------- 
2016-06-16-09.38.53.759000 
1988-12-25-17.12.30.000000 
2016-12-25-17.10.30.000000 
2016-06-16-04.10.30.000000 
2016-06-16-05.10.30.000000 
1988-12-25-15.12.30.000000 
1988-12-25-14.12.30.000000 
2016-06-16-12.10.30.000000 
2016-06-16-07.10.30.000000 
2016-06-16-08.10.30.000000 

10 record(s) selected. 

答えて

2
を高く評価している:私は現在、ゼロ結果を返します以下のクエリを持っています

- 1 dayを省略すると、クエリが機能するはずです。その理由は、timestamp(current date)が今日のタイムスタンプをゼロ時間で返すからです。その後、4時間を追加し、必要な開始時刻になります。終了時刻の似たような数学(そして午後5時は+ 17 hoursでなければなりません)。

select datetimeColumn from datetimeExample 
WHERE datetimeColumn 
BETWEEN timestamp(current date) + 4 hours AND timestamp(current date) + 17 hours 
+0

これは間違った結果を招くことがあります。上限は排他的( '<')にする必要があります。 [この記事](http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what-do-between-and-the-devil-have-in-common.aspx)では、SQL Server、問題は実際に数値と値の表現方法です。 –

+0

この場合の「間違った結果」は、BETWEEN ANDの包含的な性質がDATE/TIMEs/TIMESTAMPsに理解されているかどうかによります。私は常にエンドポイントが含まれることを期待しています。 – user2338816

関連する問題