TO_TIMESTAMP, TO_DATE

 
0
 
Oracle
ava
December | 17.03.2005, 18:14
Greetings All!
Сегодня 17-е марта. Что самое удивительное, на сервере тоже 17-е марта. Мучает вопрос, почему кверя

select TO_TIMESTAMP('10:2:3', 'HH:MI:SS') from dual;

, если скормить её Ораклу 9.2, возвращает 1-е марта?

SQL> select TO_TIMESTAMP('10:2:3', 'HH:MI:SS') from dual;

TO_TIMESTAMP('10:2:3','HH:MI:SS')
---------------------------------------------------------------------------
01-MAR-05 10.02.03.000000000 AM
Comments (1)
ava
LSD | 17.03.2005, 23:08 #
В 10g тоже самое, значит это не глюк а фича.
Попробовал сделать так:
SQL> select TO_TIMESTAMP('43', 'SS') from dual;

TO_TIMESTAMP('43','SS')
--------------------------------------------------------------------------------
01.03.05 00:00:43,000000000

SQL> select TO_TIMESTAMP('1899', 'YYYY') from dual;

TO_TIMESTAMP('1899','YYYY')
--------------------------------------------------------------------------------
01.03.99 00:00:00,000000000

SQL> select TO_TIMESTAMP('12', 'MM') from dual;

TO_TIMESTAMP('12','MM')
--------------------------------------------------------------------------------
01.12.05 00:00:00,000000000

Все поля меньшие месяца сбрасываются в умолчальное значение, а больше не меняются. Почему не знаю, но полагаю, что это связанно с тем как именно происходит преобразование дат.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  December ava  LSD
advanced
Submit