无法在两年之间获取数据



我在两年之间没有获得数据,下面是条件之间

to_char(Wfc.APPLYDTM,'MM/DD/YYYY') between '12/11/2019' and '01/10/2020'

但我获得的是"12/11/2019"和"12/31/2019"和"01/11/2020"和"01/01/2020"之间的数据,而不是两个不同年份之间的数据。

请帮忙

尝试使用TO_DATE而不是TO_CHAR,然后与有效的 Oracle 日期文本进行比较:

SELECT *
FROM Wfc
WHERE TO_DATE(APPLYDTM, 'MM/DD/YYYY') BETWEEN date '2019-12-11' AND date '2019-01-10';

请注意,如果APPLYDTM已经是日期,则无需致电TO_DATE。 如果您打算将其用作日期,则将数据转换为字符是没有意义的。

您应该将数据转换为Date以便能够正确比较。

主要思想是您应该比较date值而不是string值。

to_date(Wfc.APPLYDTM,'MM/dd/yyyy') between to_date('12/11/2019','MM/dd/yyyy') and to_date('01/10/2020','MM/dd/yyyy')

阅读此处了解更多详情。

不要将日期/时间值转换为字符串! 使用内置功能。

您的逻辑最简单地表示为:

Wfc.APPLYDTMbetween >= DATE '2019-12-11' AND
Wfc.APPLYDTMbetween < DATE '2020-01-11'

请注意,日期常量是使用DATE关键字提供的。 这应该是ISO 8601标准日期格式(很高兴!

另请注意使用>=<而不是BETWEEN。 Oracle 中的date数据类型可以包含时间部分 - 即使您在查询表时看不到它。 这可确保所有日期/时间都包含在范围内。

作为一个额外的好处,这可以使用索引(APPLYDTMbetween). 使用函数通常排除使用索引,除非您定义了基于函数的索引。

最新更新