Oracle
 sql >> Baza danych >  >> RDS >> Oracle

3 sposoby na zwrócenie strefy czasowej z wartości daty i godziny w Oracle

Poniżej znajdują się trzy sposoby zwracania informacji o strefie czasowej z wartości daty i godziny w bazie danych Oracle.

EXTRACT() Funkcja

EXTRACT(datetime) Funkcja służy do wyodrębniania różnych części daty i godziny z wartości daty i godziny. Obejmuje to informacje o strefie czasowej.

Oto przykład:

SELECT EXTRACT(
TIMEZONE_REGION FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin'
)
FROM DUAL;

Wynik:

Australia/Darwin

W tym przypadku użyłem TIMEZONE_REGION argument, aby wyodrębnić region strefy czasowej.

Dostępne argumenty za pobraniem różnych informacji o strefie czasowej to:

  • TIMEZONE_HOUR
  • TIMEZONE_MINUTE
  • TIMEZONE_REGION
  • TIMEZONE_ABBR

Możliwe jest również użycie TIMEZONE_OFFSET argument, chociaż nie pojawia się w udokumentowanej składni Oracle dla tej funkcji.

Oto przykład uzyskania skrótu strefy czasowej:

SELECT 
    EXTRACT(TIMEZONE_ABBR FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin')
FROM DUAL;

Wynik:

ACST

Zauważ, że używając powyższych argumentów strefy czasowej, wartość datetime musi być obliczona na wyrażenie typu danych TIMESTAMP WITH TIME ZONE lub TIMESTAMP WITH LOCAL TIME ZONE .

EXTRACT() funkcja przyjmuje również argumenty dla innych części daty i godziny, takich jak YEAR , MONTH , HOUR itp.

TO_CHAR(datetime) Funkcja

Możemy również użyć TO_CHAR(datetime) funkcjonować jako alternatywna metoda pobierania informacji o strefie czasowej z wartości daty i godziny.

Ta funkcja akceptuje wartość daty i godziny lub przedziału jako swój pierwszy argument, a model formatu jako drugi argument. Funkcja następnie konwertuje wartość na typ danych VARCHAR2 w określonym formacie.

Model formatu określa format, dla którego ma zostać zwrócona wartość daty/godziny/interwału. Model formatu składa się z co najmniej jednego elementu formatu. Dzięki temu możemy starannie opracować wyniki, aby odzwierciedlić nasz pożądany format.

Jeśli chcemy zwrócić tylko informacje o strefie czasowej, możemy w tym celu użyć jednego z elementów formatu.

Istnieje kilka różnych elementów formatu, których możemy użyć podczas zwracania informacji o strefie czasowej z wartości daty i godziny.

Zacznijmy od TZR element formatu:

SELECT TO_CHAR(
    TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin', 
    'TZR'
    )
FROM DUAL;

Wynik:

AUSTRALIA/DARWIN

Ten element formatu zwraca region strefy czasowej. Jeśli wartość daty i godziny zawiera tylko przesunięcie strefy czasowej, zamiast tego jest zwracana.

TZD element formatu może służyć do zwracania informacji dotyczących czasu letniego. Zwraca informacje o strefie czasowej w skróconej formie.

Przykład:

SELECT TO_CHAR(
    TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin', 
    'TZD'
    )
FROM DUAL;

Wynik:

ACST

Alternatywnie możemy użyć TZH i TZM formatowanie elementów, aby zwrócić godziny i minuty strefy czasowej w oparciu o przesunięcie strefy czasowej.

SELECT TO_CHAR(
    TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin', 
    'TZH:TZM'
    )
FROM DUAL;

Wynik:

+09:30

TZ_OFFSET() Funkcja

TZ_OFFSET() funkcja zwraca przesunięcie strefy czasowej odpowiadające argumentowi na podstawie daty wykonania instrukcji.

Oto przykład użycia TZ_OFFSET() aby zwrócić przesunięcie strefy czasowej na podstawie regionu strefy czasowego zwróconego przez EXTRACT() funkcja:

SELECT TZ_OFFSET(
    EXTRACT(TIMEZONE_REGION FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin')
)
FROM DUAL;

Wynik:

+09:30

Możemy również przekazać SESSIONTIMEZONE lub DBTIMEZONE do TZ_OFFSET() aby zwrócić odpowiednio strefę czasową naszej bieżącej sesji i bazy danych:

SELECT 
    TZ_OFFSET(SESSIONTIMEZONE) AS "Session",
    TZ_OFFSET(DBTIMEZONE) AS "DB"
FROM DUAL;

Wynik:

   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. Funkcja NLSSORT() w Oracle

  2. Wymuś użycie indeksu w Oracle

  3. Kolekcja PL/SQL:zagnieżdżona tabela w bazie danych Oracle

  4. przekazanie nazwy tabeli jako parametru plsql

  5. Jak szyfrować dane w Oracle za pomocą PL SQL?