4

在 Oracle 中,这将返回 03/01/2010。这对我来说没有意义。有人知道为什么吗?

SELECT TO_DATE( '2010' ,'yyyy' ) AS STRANGE_YEAR_RESULT
FROM DUAL

我已经尝试过 Oracle 10g 和 11g。

4

3 回答 3

4

Oracle 在其 Date 类型值字段中需要一个完整的 DateTime,因此我猜它需要当月的第一天,因为您不需要除年份之外的其他信息。请记住,您总是需要在 Oracle 中转换 TO_DATE() 和 TO_CHAR() 日期。假设是这样,Oracle“知道”您将获得所需的信息。

于 2010-03-09T17:17:39.553 回答
0

我认为没有任何合理的理由,这只是“它做了什么”。大约一年前,它还在 OTN 论坛上进行了讨论。

于 2010-03-09T17:02:45.477 回答
0

不知道,但我的猜测是月份是从零开始的,所以 Jan = 0,Mar = 2,等等。

“10”可能是一个正在形成的千年虫问题,但它被解释为 2010 年。

如果没有给出月份的某一天,则可能是假设该月的第一天。

为什么要测试这个?你永远不想这样编码。

于 2010-03-09T17:04:34.657 回答