W bazie danych Oracle LOCALTIMESTAMP() funkcja zwraca bieżącą datę i czas w strefie czasowej sesji w wartości typu TIMESTAMP .
Jest podobny do CURRENT_TIMESTAMP , z wyjątkiem tego, że CURRENT_TIMESTAMP zwraca TIMESTAMP WITH TIME ZONE wartość.
Składnia
Składnia wygląda tak:
LOCALTIMESTAMP [ (timestamp_precision) ]
Gdzie opcjonalny timestamp_precision argument określa precyzję ułamkową sekundy zwracanej wartości czasu.
Podczas wywoływania funkcji bez argumentu należy pominąć nawiasy.
Przykład
Oto przykład wywołania funkcji bez określania dokładności:
SELECT LOCALTIMESTAMP
FROM DUAL; Wynik:
07/AUG/21 08:49:50.026443000 AM
Ten przykład wyświetla datę w formacie opartym na wartości NLS_DATE_FORMAT mojego systemu parametr (którym obecnie jest DD/MON/RR ). Ten parametr wywodzi swoją wartość z NLS_TERRITORY parametr (z których mój to AUSTRALIA ).
Mamy możliwość zmiany tych parametrów (na przykład zobacz Jak zmienić format daty w sesji Oracle).
Alternatywnie możemy użyć funkcji takiej jak TO_CHAR() aby zwrócić wynik w innym formacie.
Przykład:
SELECT TO_CHAR(LOCALTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL; Wynik:
2021-08-07 08:50:20
Precyzja
Oto przykład określający precyzję. To określa dokładność ułamkową sekundy zwracanej wartości czasu.
SELECT LOCALTIMESTAMP(9)
FROM DUAL; Wynik:
07/AUG/21 08:50:47.203717000 AM
Pamiętaj, że argument precyzji musi być liczbą z przedziału od 0 do 9.
Oto, co się dzieje, gdy przekazujemy wartość spoza tego zakresu:
SELECT LOCALTIMESTAMP(10)
FROM DUAL; Wynik:
Error starting at line : 1 in command - SELECT LOCALTIMESTAMP(10) FROM DUAL Error at Command Line : 1 Column : 23 Error report - SQL Error: ORA-30088: datetime/interval precision is out of range 30088. 00000 - "datetime/interval precision is out of range" *Cause: The specified datetime/interval precision was not between 0 and 9. *Action: Use a value between 0 and 9 for datetime/interval precision.
Pomijanie nawiasów bez określania dokładności
Jak wspomniano, dzwoniąc do LOCALTIMESTAMP bez przekazywania precision argument, musisz pominąć nawiasy.
Oto, co się dzieje, gdy uwzględnimy nawiasy bez określenia precyzji:
SELECT LOCALTIMESTAMP()
FROM DUAL; Wynik:
Error starting at line : 1 in command - SELECT LOCALTIMESTAMP() FROM DUAL Error at Command Line : 1 Column : 23 Error report - SQL Error: ORA-30088: datetime/interval precision is out of range 30088. 00000 - "datetime/interval precision is out of range" *Cause: The specified datetime/interval precision was not between 0 and 9. *Action: Use a value between 0 and 9 for datetime/interval precision.
Otrzymujemy ten sam błąd, co w poprzednim przykładzie. Oracle Database szuka argumentu precyzji z zakresu od 0 do 9, ale nie przekazaliśmy żadnego.
Argument zerowy
Ten sam błąd występuje przy przekazywaniu null :
SELECT LOCALTIMESTAMP(null)
FROM DUAL; Wynik:
Error starting at line : 1 in command - SELECT LOCALTIMESTAMP(null) FROM DUAL Error at Command Line : 1 Column : 23 Error report - SQL Error: ORA-30088: datetime/interval precision is out of range 30088. 00000 - "datetime/interval precision is out of range" *Cause: The specified datetime/interval precision was not between 0 and 9. *Action: Use a value between 0 and 9 for datetime/interval precision.