2015-01-19 5 views
-1

У меня есть список от peopleoft timezones, который мне нужно преобразовать, используя метод From_TZ. Часовые пояса будут в формате EST, IST и т. Д.Как изменить часовые пояса в оракуле?

select FROM_TZ (CAST ((:dt) AS TIMESTAMP), 'EST') 
      AT TIME ZONE 'IST' from dual 
+2

Не могли бы вы объяснить, что не работает в вашем примере кода? –

+0

эти имена зон не работают в oracle, есть ли способ сотрудничать с списком timeotsonesoft timesoft и использовать их в запросе оракула для преобразования часового пояса. – Yogesh

+1

Определить, что «не работает». Вы получаете сообщение об ошибке? Какая ошибка? Введенный вами код использует жестко запрограммированные часовые пояса, поэтому он не получает часовые пояса от вызывающего, он просто получает переменную связывания ': dt' (которая, возможно,« дата »?) От вызывающего. Вы подразумеваете, что ваш фактический код также получает часовые пояса в качестве переменных привязки? –

ответ

1

IST не работает, потому что это неоднозначно, видеть эту таблицу:

SELECT tzabbrev, TZ_OFFSET(tzname), tzname 
FROM V$TIMEZONE_NAMES tz WHERE tzabbrev IN ('EST', 'IST') 
ORDER BY 1,2,3; 

TZABBREV TZ_OFFSET(TZNAME) TZNAME 
EST +10:00 Australia/Brisbane 
EST +10:00 Australia/Lindeman 
EST +10:00 Australia/Queensland 
EST +10:30 Australia/Broken_Hill 
EST +10:30 Australia/Yancowinna 
EST +11:00 Australia/ACT 
EST +11:00 Australia/Canberra 
EST +11:00 Australia/Hobart 
EST +11:00 Australia/LHI 
EST +11:00 Australia/Lord_Howe 
EST +11:00 Australia/Melbourne 
EST +11:00 Australia/NSW 
EST +11:00 Australia/Sydney 
EST +11:00 Australia/Tasmania 
EST +11:00 Australia/Victoria 
EST -05:00 America/Cayman 
EST -05:00 America/Detroit 
EST -05:00 America/Fort_Wayne 
EST -05:00 America/Grand_Turk 
EST -05:00 America/Indiana/Indianapolis 
EST -05:00 America/Indiana/Marengo 
EST -05:00 America/Indiana/Vevay 
EST -05:00 America/Indianapolis 
EST -05:00 America/Iqaluit 
EST -05:00 America/Jamaica 
EST -05:00 America/Kentucky/Louisville 
EST -05:00 America/Louisville 
EST -05:00 America/Montreal 
EST -05:00 America/New_York 
EST -05:00 America/Panama 
EST -05:00 America/Thunder_Bay 
EST -05:00 Canada/Eastern 
EST -05:00 EST 
EST -05:00 EST5EDT 
EST -05:00 Jamaica 
EST -05:00 US/East-Indiana 
EST -05:00 US/Eastern 
EST -05:00 US/Michigan 
EST -06:00 America/Cancun 
EST -06:00 America/Chicago 
EST -06:00 America/Indiana/Knox 
EST -06:00 America/Indiana/Petersburg 
EST -06:00 America/Indiana/Vincennes 
EST -06:00 America/Knox_IN 
EST -06:00 America/Managua 
EST -06:00 America/Rankin_Inlet 
EST -06:00 CST 
EST -06:00 US/Central 
EST -06:00 US/Indiana-Starke 
EST -07:00 America/Cambridge_Bay 
IST +00:00 Atlantic/Reykjavik 
IST +00:00 Eire 
IST +00:00 Europe/Belfast 
IST +00:00 Europe/Dublin 
IST +00:00 Iceland 
IST +02:00 Asia/Gaza 
IST +02:00 Asia/Jerusalem 
IST +02:00 Asia/Tel_Aviv 
IST +02:00 Israel 
IST +05:00 Asia/Karachi 
IST +05:30 Asia/Calcutta 
IST +06:00 Asia/Dacca 
IST +06:00 Asia/Dhaka 

Вы можете использовать часовой пояс аббревиатуру только для следующих часовых поясов:

SELECT tzabbrev, tzname, TZ_OFFSET(tzname) 
FROM V$TIMEZONE_NAMES tz 
WHERE tzabbrev = tzname; 

TZABBREV TZNAME TZ_OFFSET(TZNAME) 
CET CET +01:00 
CST CST -06:00 
EET EET +02:00 
EST EST -05:00 
GMT GMT +00:00 
HST HST -10:00 
MET MET +01:00 
MST MST -07:00 
PST PST -08:00 
WET WET +00:00 

Важное примечание: Когда вы используете сокращение от часовой пояс, например EST, тогда вы не получите значения Daylight-Saving-Time!

Смежные вопросы