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

Funkcja LOCALTIMESTAMP() w Oracle

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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. wyzwalacze edycji krzyżowej do przodu w R12.2

  2. Wybór NOT IN z wartościami NULL

  3. Nie można skompilować GI 12.1.0.2 i błędu segmentacji

  4. Dobra referencja dla Oracle PL/SQL

  5. jak sprawdzić, czy baza danych jest spójna po niepełnym odzyskaniu