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