Oracle
 sql >> база данни >  >> RDS >> Oracle

3 начина за връщане на часовата зона от стойност на дата и час в Oracle

По-долу са дадени три начина за връщане на информация за часовата зона от стойност за дата и час в 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    

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да убия всички активни и неактивни сесии на оракул за потребителя

  2. Най-добри практики:Задачи за поддръжка и подобряване на Oracle Cloud

  3. Как да конвертирам наследен израз за ляво външно присъединяване в Oracle?

  4. Какво означава %Type в Oracle sql?

  5. Пресъздайте лош RAC възел