在Oracle中,为什么要在3月1日返回?

时间:2010-03-09 16:51:24

标签: oracle date-conversion

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

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

我尝试过Oracle 10g和11g。

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

我认为没有任何明智的理由,它只是“它的作用”。大约一年前,它也被讨论过on the OTN forums

答案 2 :(得分:0)

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

“10”可能是正在制作的Y2K问题,但它被解释为2010年。

如果没有给出一个月中的某一天,也许它假设是该月的第一天。

为什么要测试一下?你永远不想用这种方式编码。