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.