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

SYS_EXTRACT_UTC() Funkcja w Oracle

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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bool obsługuje Oracle SQL

  2. Jak skopiować lub zaimportować schematy Oracle między dwiema różnymi bazami danych na różnych serwerach?

  3. Funkcja dzielenia w Oracle na wartości oddzielone przecinkami z automatyczną sekwencją

  4. Uzyskiwanie błędu — ORA-01858:znaleziono znak nienumeryczny w miejscu, w którym oczekiwano wartości liczbowej

  5. Jak przekazać argumenty do skryptu PL/SQL w wierszu poleceń za pomocą SQLPLUS?