В Oracle, почему это возвращается 1 марта? - PullRequest
4 голосов
/ 09 марта 2010

В Oracle возвращается 03.01.2010. Это не имеет смысла для меня. Кто-нибудь знает почему?

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

Я пробовал на Oracle 10g и 11g.

Ответы [ 3 ]

4 голосов
/ 09 марта 2010

Oracle нуждается в полном DateTime в своем поле значения типа Date, поэтому, я бы предположил, что это займет первый день текущего месяца *, так как вам не нужна никакая другая информация, кроме года. Помните, что вам всегда нужно приводить даты TO_DATE () и TO_CHAR () в Oracle. Исходя из этого, Oracle «знает», что вы получите необходимую информацию.

0 голосов
/ 09 марта 2010

Не знаю, но я предполагаю, что месяцы начинаются с нуля, поэтому январь = 0, март = 2 и т. Д.

"10" может быть проблемой 2000 года, но это интерпретируется как 2010.

А если день месяца не указан, возможно, он предполагает первый день месяца.

Зачем проверять это? Вы никогда не захотите кодировать таким образом.

0 голосов
/ 09 марта 2010

Я не думаю, что есть какая-либо разумная причина, это просто "то, что он делает". Это также обсуждалось на форумах OTN около года назад.

...