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 (однако я знаю, что это может быть смещение моего часового пояса клиента служб терминалов, но на этом компьютере нет служб терминалов на нем , просто админ)
Запустив то же самое на сервере в Амстердаме (через 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?