1

日付範囲に基づいてカウントを行う SQL ステートメントを作成しています。しかし、何らかの理由でデータが返されません。日付範囲でカウントをフィルタリングする前に、すべて正常に機能します。これがそのコードです。

SELECT
CR.GCR_RFP_ID
,S.RFP_RECEIVED_DT
,CR.GCR_RECEIVED_DT
,CT.GCT_LOB_IND
FROM ADM.GROUP_CHANGE_TASK_FACT CT
JOIN ADM.B_GROUP_CHANGE_REQUEST_DIM CR 
    ON CR.GROUP_CHANGE_REQUEST_KEY = CT.GROUP_CHANGE_REQUEST_KEY 
JOIN ADM.B_RFP_WC_COVERAGE_DIM S 
    ON S. RFP_ID = CR.GCR_RFP_ID
WHERE CT.GCT_LOB_IND = 'WC'
AND CR.GCR_CHANGE_TYPE_ID IN ('10','20','30','50','60','70','80','90','100','110',
                          '120','130','140', '150','160','170','180','190','200',
                          '210','220','230','240','260','270','280','300','310',
                          '320','330','340','350','360','370','371','372')
AND S.RFP_AUDIT_IND = 'N'
AND S.RFP_TYPE_IND = 'A'

私が使用している日付フィールドは CR.GCR_RECIEVED_DT と呼ばれます。これはデータベースの新しいフィールド a で、すべてのレコードは 01-JAN-00 です。しかし、データを取得できることを確認するためだけに、まだカウントを行っています。今、私はこの行を追加しました:

AND CR.GCR_RECEIVED_DT LIKE '01-JAN-00'

ランダムなテストとして。私はすべての日付が同じであることを知っています。そして、問題なく動作します。したがって、その行を削除して、次のように置き換えます。

AND CR.GCR_RECEIVED_DT BETWEEN '31-DEC-99' AND '02-JAN-00'

シンプルにするために、この小さな範囲を使用しました。しかし、2000 年 1 月 1 日が間違いなくこれら 2 つの日付の間にあるにもかかわらず、データは返されません。なぜこれが起こっているのか分かりません。私もこの行を試しました:

AND CR.GCR_RECEIVED_DT = '01-JAN-00'

まだデータが返されません。LIKE でのみ動作するようです。確認しましたが、フィールドは日付型です。どんな助けでも大歓迎です。

4

2 に答える 2

1

このようなことを試してください:

WHERE TRUNC(CR.GCR_RECEIVED_DT) = TO_DATE('01-JAN-00','DD-Mon-YY')

パラメータなしの TRUNC は、DATE から時、分、および秒を削除します。

于 2013-08-28T15:28:59.807 に答える