gpt4 book ai didi

SQL BETWEEN 不工作

转载 作者:行者123 更新时间:2023-12-04 16:27:58 27 4
gpt4 key购买 nike

我在 oracle 数据库上运行了以下语句。

SELECT br.Number
FROM Billing_History br
WHERE TRUNC(br.History_Date) BETWEEN to_date('01-Jan-99', 'DD-Mon-YY HH:MI:SS')
AND to_date('11-May-99', 'DD-Mon-YY HH:MI:SS')

该表中肯定有介于这些日期之间的记录。他们都有一个数字,但出于某种原因,这不会返回任何数字。它根本没有返回任何东西。

数据库中的日期格式为“01-Jan-11”。所以看起来我也把日期放在正确的格式中。你看我写的SQL有什么问题吗?

最佳答案

问题不在于格式模型的时间组件,而是 'YY' 组件,这意味着您的年份被转换为 2099,而不是 1999。试试这个来说明:

SQL> SELECT to_char(to_date('01-Apr-99','DD-Mon-YY'),'DD-Mon-YYYY') thedate
FROM dual;

THEDATE
-----------
01-Apr-2099

SQL>

使用 20 世纪日期时,使用 RR 或 YYYY 作为年份的格式模型组件。

编辑:

您声明“数据库中的日期格式为 '01-Jan-11'”。这是 Oracle 中对日期的常见但不正确的解释。 DATE 字段始终存储在相同的 internal format 中.这完全取决于您如何在转换函数中使用格式模型,该函数决定了如何将数据转换为内部格式/从内部格式转换。

关于SQL BETWEEN 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5979614/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com