W bazie danych Oracle NEW_TIME()
funkcja konwertuje datę z określonej strefy czasowej na inną określoną strefę czasową i zwraca wynik.
Składnia
Składnia wygląda tak:
NEW_TIME(date, timezone1, timezone2)
Funkcja zwraca więc datę i godzinę w strefie czasowej timezone2
kiedy data i godzina w strefie czasowej timezone1
są date
.
Pamiętaj, że przed użyciem tej funkcji musisz ustawić NLS_DATE_FORMAT
parametr do wyświetlania czasu 24-godzinnego.
Argumenty timezone1
i timezone2
może być dowolnym z tych ciągów tekstowych:
AST lub ADT | Atlantyk standardowy lub czas letni |
BST lub BDT | Bering standardowy lub czas letni |
CST lub CDT | Centralny czas standardowy lub letni |
EST lub EDT | Czas wschodni standardowy lub letni |
GMT | Średni czas Greenwich |
HST lub HDT | Czas standardowy Alaska-Hawaje lub czas letni |
MST lub MDT | Czas górski standardowy lub letni |
NST | Czas standardowy Nowej Fundlandii |
PST lub PDT | Czas pacyficzny standardowy lub letni |
YST lub YDT | Jukon czas standardowy lub letni |
Przykład
Oto przykład:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
SELECT
NEW_TIME(
TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'),
'AST',
'PST'
)
FROM DUAL;
Wynik:
2030-03-01 08:30:45
Jak wspomniano, podczas korzystania z tej funkcji NLS_DATE_FORMAT
parametr musi być ustawiony na wyświetlanie czasu 24-godzinnego, więc to właśnie robi pierwsza linia w powyższym przykładzie. Możesz pominąć ten wiersz, jeśli NLS_DATE_FORMAT
Twojej sesji parametr już używa czasu 24-godzinnego. Zobacz Jak ustawić format daty sesji, aby uzyskać więcej przykładów ustawiania formatu daty dla bieżącej sesji.
Argumenty zerowe
Jeśli jakikolwiek argument ma wartość null
, wynik to null
:
SET NULL 'null';
SELECT
NEW_TIME(null, 'AST', 'ADT') AS "1",
NEW_TIME(TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), null, 'ADT') AS "2",
NEW_TIME(TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), 'AST', null) AS "3"
FROM DUAL;
Wynik:
1 2 3 _______ _______ _______ null null null
Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null
występuje w wyniku polecenia SQL SELECT
oświadczenie.
Możesz jednak użyć SET NULL
aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null
należy zwrócić.
Brakujący argument
Wywoływanie NEW_TIME()
z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT NEW_TIME()
FROM DUAL;
Wynik:
Error starting at line : 1 in command - SELECT NEW_TIME() 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: