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

Jak wstawić znacznik czasu w Oracle w określonym formacie?

Nie wstawiasz znacznika czasu w określonym formacie. Znaczniki czasu (i daty) są przechowywane w bazie danych za pomocą wewnętrznej reprezentacji, która ma od 7 do 11 bajtów w zależności od typu i precyzji. Więcej na ten temat znajdziesz w tym pytaniu , między innymi.

Twój klient lub aplikacja decyduje, jak wyświetlić wartość w postaci czytelnej dla człowieka.

Kiedy to zrobisz:

to_timestamp(localtimestamp,'YYYY/MM/DD')

niejawnie konwertujesz localtimestamp do ciągu, używając ustawień NLS sesji, a następnie konwertując go z powrotem na sygnaturę czasową. Może to przypadkowo zmienić wartość — tracąc precyzję — ale nie zmieni sposobu, w jaki wartość jest przechowywana wewnętrznie. W twoim przypadku niezgodność między ustawieniem NLS a dostarczanym formatem prowadzi do błędu ORA-01830.

Więc twoja pierwsza wstawka jest poprawna (zakładając, że naprawdę chcesz mieć czas sesji, a nie czas serwera). Jeśli chcesz zobaczyć przechowywane wartości w określonym formacie, a następnie albo zmień ustawienia NLS sesji klienta, albo najlepiej sformatuj je jawnie podczas zapytania, np.:

select to_char(time, 'YYYY-MM-DD HH24:MI:SS.FF3') from activity_log


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz kopię testowej bazy danych produkcji tylko z przykładowym zestawem danych

  2. Cofnij A, jeśli B pójdzie nie tak. wiosna boot, jdbctemplate

  3. funkcja pl/sql wywoływana ile razy?

  4. Dodaj nową kolumnę i wypełnij ją częścią innej kolumny w Oracle SQL

  5. Zresetuj sumę, gdy warunek zostanie spełniony w Oracle