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

CURRENT_TIMESTAMP() Funkcja w Oracle

W bazie danych Oracle CURRENT_TIMESTAMP() funkcja zwraca bieżącą datę i czas w strefie czasowej sesji, w wartości typu TIMESTAMP WITH TIME ZONE .

Jest podobny do LOCALTIMESTAMP , z wyjątkiem tego, że LOCALTIMESTAMP zwraca TIMESTAMP wartość.

Składnia

Składnia wygląda tak:

CURRENT_TIMESTAMP [ (precision) ]

Gdzie opcjonalna 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 CURRENT_TIMESTAMP
FROM DUAL;

Wynik:

06/AUG/21 08:32:31.165866000 AM AUSTRALIA/BRISBANE

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(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;

Wynik:

2021-08-06 08:44:39

Precyzja

Oto przykład określający precyzję. To określa dokładność ułamkową sekundy zwracanej wartości czasu.

SELECT CURRENT_TIMESTAMP(9)
FROM DUAL;

Wynik:

06/AUG/21 09:02:37.868264000 AM AUSTRALIA/BRISBANE

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 CURRENT_TIMESTAMP(10)
FROM DUAL;

Wynik:

Error starting at line : 1 in command -
SELECT CURRENT_TIMESTAMP(10)
FROM DUAL
Error at Command Line : 1 Column : 26
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 CURRENT_TIMESTAMP bez przekazywania precision argument, musisz pominąć nawiasy.

Oto, co się dzieje, gdy uwzględnimy nawiasy bez określenia precyzji:

SELECT CURRENT_TIMESTAMP()
FROM DUAL;

Wynik:

Error starting at line : 1 in command -
SELECT CURRENT_TIMESTAMP()
FROM DUAL
Error at Command Line : 1 Column : 26
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 CURRENT_TIMESTAMP(null)
FROM DUAL;

Wynik:

Error starting at line : 1 in command -
SELECT CURRENT_TIMESTAMP(null)
FROM DUAL
Error at Command Line : 1 Column : 26
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. Wartości nie są wyświetlane z wiodącym zerem w Oracle

  2. Funkcja NLS_INITCAP() w Oracle

  3. Powtarzające się wartości w kolumnie

  4. Jak wyświetlić komentarze kolumny z operacją desc

  5. problem ORA-00001:naruszone ograniczenie unikatowe podczas INSERT/UPDATE