在查询中添加where子句后,即使有符合条件的行,也不会再有任何结果。
(是begindatum是一个日期)
SELECT COUNT(cursus) AS inschrijvingen,
cursus,
begindatum
FROM inschrijvingen
WHERE begindatum BETWEEN TO_DATE('01-JAN-99', 'DD-MON-YY')
and TO_DATE('31-DEC-99', 'DD-MON-YY')
GROUP BY cursus,
begindatum;
所有在1999年都有begindatum的行,相反,我没有任何结果
答案 0 :(得分:2)
问题是TO_DATE('01-JAN-99', 'DD-MON-YY')
转换为01-JAN-2099
。
有2种可能的解决方案:
1)使用4位数字的年份:TO_DATE('01-JAN-1999', 'DD-MON-YYYY')
2)使用RR代替YY:TO_DATE('01-JAN-99', 'DD-MON-RR')
转换为01-JAN-1999
。
答案 1 :(得分:0)
使用DATE
关键字使用ISO标准格式输入日期:
SELECT COUNT(cursus) AS inschrijvingen, cursus,
begindatum
FROM inschrijvingen
WHERE begindatum BETWEEN DATE '1999-01-01' AND DATE '1999-12-31'
GROUP BY cursus, begindatum;
您绝对不能使用两位数的年份。您可以使用TO_DATE()
,但是当您可以显式添加日期文字作为日期时,这很笨拙。
此外,Oracle DATE
数据类型包含时间。这意味着上述内容可能不包括一年中的最后一天。我强烈建议您使用不平等而不是BETWEEN
:
WHERE begindatum >= DATE '1999-01-01' AND
begindatum < DATE '2000-01-01'