Путаница в часовых поясах Oracle 10g

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, используемый для?

5
задан Cade Roux 16 January 2012 в 19:17
поделиться