1

私のSQLに対する理解は、

WHEN reading_start_dt BETWEEN '2020-02-09' AND '2020-02-15'

と同じです

WHEN reading_start_dt >= '2019-02-09' AND reading_start_dt <= '2019-02-15'

しかし、クエリの唯一の違いが日付範囲の指定である場合、まったく異なる ResultSet を取得しています。
正しい日付が返されていますが、データが異なります。
これは、Teradata と HANA の両方で発生しています。

何か不足していますか?

編集:


SELECT meter_id, reading_meas, reading_interval_start_dttm FROM "_SYS_BIC"."NGDW.SM.PVT/METER_READING"  
WHERE Reading_Start_Dt BETWEEN '2020-02-09' AND '2020-02-15' AND Service_Channel_num = 1 AND Meter_id = 11870690   
ORDER BY Reading_Interval_Start_Dttm

ここに画像の説明を入力


SELECT meter_id, reading_meas, reading_interval_start_dttm FROM "_SYS_BIC"."NGDW.SM.PVT/METER_READING"  
WHERE reading_start_dt >= '2019-02-09' AND reading_start_dt <= '2019-02-15' AND service_channel_num = 1 AND meter_id = 11870690  
ORDER BY Reading_Interval_Start_Dttm

ここに画像の説明を入力

指摘されたように、これは私のコードのタイプミスの結果です。本番環境の
ものと要求された変更を比較していました。鋭い目をありがとう、土曜日は明らかに疲れすぎて見えなかった。

4

2 に答える 2

3

使用するクエリ構文に関係なく、日付範囲は同じではありません

'2020-02-09' AND '2020-02-15' -- the year is 2020
'2019-02-09' AND '2019-02-15' -- the year here is 2019

これらは構文的に同等です。

WHEN reading_start_dt BETWEEN '2019-02-09' AND '2019-02-15'

WHEN reading_start_dt >= '2019-02-09' AND
     reading_start_dt <= '2019-02-15'

ただし、日付範囲を記述する最も安全な方法は、次のように>=with<を組み合わせて使用​​することです。

WHEN reading_start_dt >= '2019-02-09' AND
     reading_start_dt < '2019-02-16' -- note the increase of date here

この後者の方法は、時間データの精度に関係なく正確に機能します

于 2020-02-23T01:43:25.620 に答える