-1

1 つのアプリケーションに日付と時刻の 2 つの異なるテーブルがあります。日付テーブルの「日付」は「datetime」形式で格納され、時刻テーブルの「時間」部分は varchar 形式で格納されます。

両方のテーブル ID は、日時値のトランザクション テーブルに格納されます。

トランザクション テーブルから特定の日時値を指定してデータベースにクエリを実行しているときに問題が発生しました。

日付表

ID_DAT          DATE_DAT (smalldatetime)  
20000101    01/01/2000 0:00  
20000102    02/01/2000 0:00  
20000103    03/01/2000 0:00   
20000104    04/01/2000 0:00  
20000105    05/01/2000 0:00  
20000106    06/01/2000 0:00  
20000107    07/01/2000 0:00  
20000108    08/01/2000 0:00  
20000109    09/01/2000 0:00  
20000110    10/01/2000 0:00  

タイムテーブル

ID_TIM   HOUR_TIM   MINUTE_TIM  STRING_TIM (varchar)  
0    0          0           00:00  
1    0          1           00:01  
2    0          2           00:02  
3    0          3           00:03  
4    0          4           00:04  
5    0          5           00:05  
6    0          6           00:06  
7    0          7           00:07  
8    0          8           00:08  
9    0          9           00:09  
10   0         10           00:10  

トランザクション データのサンプル (ID は提供されたマスターと一致しない場合があります)

SEQNUM  ID_DAT          ID_TIM  ORIGINAL_VALUE_PER  
2495089 20130424    30  10.0000000000  
2495089 20130424    60  12.0000000000  
2495089 20130424    90  15.0000000000  
2495089 20130424    120 20.0000000000  
2495089 20130424    150 24.0000000000  
2495089 20130424    180 28.0000000000  
2495089 20130424    210 34.0000000000  

ここで、特定の日の 03:30 以降のトランザクション データをクエリしたいとします。

どうすれば同じことを達成できるか教えてください。

ありがとう

4

1 に答える 1

0

このような漠然としたもの:

       SELECT * from TRANSACTION_TABLE TT 
    join DATE_TABLE DT on TT.ID_DAT = DT.ID_DAT 
    join TIME_TABLE TM on TT.ID_TIM = TM.ID_TIM 
    where (DT.DATE_DAT > '10/19/2013'  and DT.DATE_DAT < '10/21/2013')
or (DT.DATE_DAT = '10/21/2013' and HOUR_TIM < 3 and MINUT_TIME < 30)
or (DT.DATE_DAT = '10/19/2013' and HOUR_TIM >= 3 and MINUT_TIME >= 30)
于 2013-10-19T12:45:04.353 に答える