SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI')
,TO_CHAR(CURRENT_DATE, 'YYYY-MM-DD HH24:MI')
,TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI TZR')
,TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI TZR')
,TO_CHAR(LOCALTIMESTAMP, 'YYYY-MM-DD HH24:MI TZR')
,DBTIMEZONE
,SESSIONTIMEZONE
FROM DUAL;
Возвращает:
2012-01-16 11:42
2012-01-16 11:42
2012-01-16 11:42 -06:00
2012-01-16 11:42 -06:00
2012-01-16 11:42 +00:00
+00:00
-06:00
Кажется, время базы данных зона - GMT, но SYSDATE совпадает с CURRENT_DATE.
Когда я подключаюсь к этому серверу (Windows), часовой пояс явно CST (однако я знаю, что это могло быть связано с моим клиентским временем служб терминалов). Zone Offset, но на этой машине нет служб терминалов, только административная)
Выполняя то же самое на сервере в Амстердаме (через 4 минуты все с того же клиента TOAD), я получаю:
2012-01-16 18:46
2012-01-16 11:46
2012-01-16 18:46 +01:00
2012-01-16 11:46 -06:00
2012-01-16 11:46 +00:00
+02:00
-06:00
Обратите внимание на +2, но, по крайней мере, SYSDATE и CURRENT_DATE различаются.
Что здесь происходит? Откуда приходит SYSDATE и есть ли что-то еще, что на него влияет?
Похоже, DBTIMEZONE ни для чего не используется. из этих вещей? Так что же DBTIMEZONE, используемый для?