我正在编写一个应该根据日期范围进行计数的 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'
我使用这个小范围来保持简单。但即使 01-JAN-00 明确地落在这两个日期之间,也不会返回任何数据。我不知道为什么会这样。我什至试过这条线:
AND CR.GCR_RECEIVED_DT = '01-JAN-00'
而且我仍然没有返回数据。它似乎只适用于 LIKE。我已经检查过,该字段是日期类型。任何帮助将不胜感激。