По-долу са дадени три начина за връщане на информация за часовата зона от стойност за дата и час в Oracle Database.
EXTRACT()
Функция
EXTRACT(datetime)
функцията се използва за извличане на различни части за дата и време от стойност на дата и час. Това включва информацията за часовата зона.
Ето един пример:
SELECT EXTRACT(
TIMEZONE_REGION FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin'
)
FROM DUAL;
Резултат:
Australia/Darwin
В този случай използвах TIMEZONE_REGION
аргумент за извличане на региона на часовата зона.
Наличните аргументи за извличане на различна информация за часовата зона са:
TIMEZONE_HOUR
TIMEZONE_MINUTE
TIMEZONE_REGION
TIMEZONE_ABBR
Възможно е също да използвате TIMEZONE_OFFSET
аргумент, въпреки че това не се появява в документирания синтаксис на Oracle за тази функция.
Ето пример за получаване на съкращението на часовата зона:
SELECT
EXTRACT(TIMEZONE_ABBR FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin')
FROM DUAL;
Резултат:
ACST
Имайте предвид, че когато използвате горните аргументи за часовата зона, стойността на датата и времето трябва да се изчисли до израз от тип данни TIMESTAMP WITH TIME ZONE
или TIMESTAMP WITH LOCAL TIME ZONE
.
EXTRACT()
функцията също така приема аргументи за други части за дата и час, като YEAR
, MONTH
, HOUR
и др.
TO_CHAR(datetime)
Функция
Можем също да използваме TO_CHAR(datetime)
функционира като алтернативен метод за получаване на информация за часовата зона от стойност за дата и час.
Тази функция приема стойността за дата и време или интервал като свой първи аргумент и модел на формат като втори аргумент. След това функцията преобразува стойността в тип данни VARCHAR2
в посочения формат.
Форматният модел определя формата, за който да се върне стойността за дата и време/интервал. Форматният модел се състои от един или повече елементи на формат. Това ни позволява внимателно да изработим резултатите, за да отразяват желания от нас формат.
Ако искаме да върнем само информация за часовата зона, можем да използваме един от елементите на формата за тази конкретна цел.
Има няколко различни елемента на формат, които можем да използваме, когато връщаме информация за часовата зона от стойност за дата и час.
Нека започнем с TZR
форматен елемент:
SELECT TO_CHAR(
TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin',
'TZR'
)
FROM DUAL;
Резултат:
AUSTRALIA/DARWIN
Този елемент на формат връща региона на часовата зона. Ако стойността за дата и час включва само изместването на часовата зона, то вместо това се връща.
TZD
Елементът format може да се използва за връщане на информация за лятното часово време. Връща информацията за часовата зона в съкратена форма.
Пример:
SELECT TO_CHAR(
TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin',
'TZD'
)
FROM DUAL;
Резултат:
ACST
Като алтернатива можем да използваме TZH
и TZM
форматирайте елементи, за да върнете часовата зона часове и минути въз основа на изместването на часовата зона.
SELECT TO_CHAR(
TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin',
'TZH:TZM'
)
FROM DUAL;
Резултат:
+09:30
TZ_OFFSET()
Функция
TZ_OFFSET()
функцията връща отместването на часовата зона, съответстващо на аргумента, въз основа на датата, на която операторът е изпълнен.
Ето пример за използване на TZ_OFFSET()
за да върнете изместването на часовата зона въз основа на региона на часовата зона, върнат от EXTRACT()
функция:
SELECT TZ_OFFSET(
EXTRACT(TIMEZONE_REGION FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin')
)
FROM DUAL;
Резултат:
+09:30
Можем също да предадем SESSIONTIMEZONE
или DBTIMEZONE
към TZ_OFFSET()
за да върнете часовата зона на нашата текуща сесия и съответно база данни:
SELECT
TZ_OFFSET(SESSIONTIMEZONE) AS "Session",
TZ_OFFSET(DBTIMEZONE) AS "DB"
FROM DUAL;
Резултат:
Session DB __________ _________ +10:00 +00:00