Почему в Oracle это возвращается 1 марта?
-
18-09-2019 - |
Вопрос
В Oracle это возвращает 01.03.2010.Для меня это не имеет смысла.Кто-нибудь знает, почему?
SELECT TO_DATE( '2010' ,'yyyy' ) AS STRANGE_YEAR_RESULT
FROM DUAL
Я пробовал Oracle 10g и 11g.
Решение
Oracle необходимо полное значение DateTime в поле значения типа Date, поэтому требуется первый день текущий Я думаю, месяц, поскольку вам не требовалась никакой другой информации, кроме года.Помните, что вам всегда нужно выполнять преобразование дат TO_DATE() и TO_CHAR() в Oracle.Предполагая это, Oracle «знает», что вы получите необходимую информацию.
Другие советы
Я не думаю, что есть какая-то разумная причина, это просто «то, что оно делает».Это тоже обсуждалось на форумах ОТН около года назад.
Не знаю, но я предполагаю, что месяцы отсчитываются от нуля, поэтому январь = 0, март = 2 и т. д.
«10» может быть проблемой 2000 года, но интерпретируется как 2010 год.
А если день месяца не указан, возможно, предполагается первый день месяца.
Зачем это тестировать?Вы никогда не захотите кодировать таким образом.