我在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')
Run Code Online (Sandbox Code Playgroud)
该表中肯定有记录介于这些日期之间.并且他们都有一个与他们一起的数字,但由于某种原因,这不会返回任何数字.它什么都没回来.
数据库中的日期采用此格式'01 -Jan-11'.所以我似乎也把日期放在正确的格式中.你看到我写的SQL有什么问题吗?
DCo*_*kie 11
问题不在于格式模型的时间组件,它是'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>
Run Code Online (Sandbox Code Playgroud)
使用20世纪日期时,使用RR或YYYY作为年份的格式模型组件.
编辑:
您将声明"数据库中的日期采用此格式'01 -Jan-11'." 这是Oracle中日期的常见但不正确的解释.DATE字段始终以相同的内部格式存储.这一切都与您如何在转换函数中使用格式模型有关,这些函数指示数据如何转换为内部格式/从内部格式转换.
在您的日期格式而不是YY中使用RR.这可能是2099年而不是1999年.
SELECT br.Number FROM Billing_History br WHERE
TRUNC(br.History_Date) BETWEEN to_date('01-Jan-99', 'DD-Mon-RR HH:MI:SS')
AND to_date('11-May-99', 'DD-Mon-RR HH:MI:SS')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3550 次 |
| 最近记录: |