W bazie danych Oracle SYS_EXTRACT_UTC()
Funkcja wyodrębnia czas UTC (uniwersalny czas koordynowany) z wartości daty i godziny z przesunięciem strefy czasowej lub nazwą regionu strefy czasowej.
Składnia
Składnia wygląda tak:
SYS_EXTRACT_UTC(datetime_with_timezone)
Przykład
Oto przykład do zademonstrowania:
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
Wynik:
25/AUG/35 06:30:45.123456789 AM
Wynikowy format zależy od wartości Twojego NLS_TIMESTAMP_FORMAT
parametr. Domyślna wartość tego parametru pochodzi z NLS_TERRITORY
parametr. Zmiana któregokolwiek z nich może zmienić format SYS_EXTRACT_UTC()
funkcja dla Twojej sesji.
Przykład:
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'DD-MON-RRRR HH24:MI:SSXFF';
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
Wynik:
25-AUG-2035 06:30:45.123456789
A oto jak to wygląda, gdy ustawię NLS_TERRITORY
parametr do AMERICA
:
ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
Wynik:
25-AUG-35 06.30.45.123456789 AM
Zmiana tego parametru niejawnie ustaw NLS_TIMESTAMP_FORMAT
do formatu AMERICA
.
Zobacz Jak zmienić format daty sesji, aby uzyskać więcej informacji i przykładów.
Nazwa regionu strefy czasowej
Możesz alternatywnie użyć nazwy regionu strefy czasowej zamiast przesunięcia strefy czasowej.
Przykład:
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 Asia/Bangkok')
FROM DUAL;
Wynik:
25-AUG-35 03.30.45.123456789 AM
Domyślna strefa czasowa
Jeśli strefa czasowa nie jest określona, data i godzina jest powiązana ze strefą czasową sesji.
Przykład:
SELECT SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789')
FROM DUAL;
Wynik:
25-AUG-35 12.30.45.123456789 AM
Strefę czasową bieżącej sesji możesz sprawdzić za pomocą SESSIONTIMEZONE
funkcja:
SELECT SESSIONTIMEZONE
FROM DUAL;
Wynik:
Australia/Brisbane
Zobacz 4 sposoby zmiany strefy czasowej w Oracle, aby zapoznać się z przykładami zmiany tego.
Argumenty zerowe
Przekazywanie null
powoduje błąd:
SELECT SYS_EXTRACT_UTC(null)
FROM DUAL;
Wynik:
Error starting at line : 1 in command - SELECT SYS_EXTRACT_UTC(null) FROM DUAL Error at Command Line : 1 Column : 24 Error report - SQL Error: ORA-30175: invalid type given for an argument 30175. 00000 - "invalid type given for an argument" *Cause: There is an argument with an invalid type in the argument list. *Action: Use the correct type wrapper for the argument.
Brakujący argument
Wywołanie funkcji z niewłaściwą liczbą argumentów lub bez przekazania żadnych argumentów skutkuje błędem:
SELECT SYS_EXTRACT_UTC()
FROM DUAL;
Wynik:
Error starting at line : 1 in command - SELECT SYS_EXTRACT_UTC() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: