Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да вмъкнете клеймо за време в Oracle в конкретен формат

Не вмъквате клеймо за време в определен формат. Времевите марки (и датите) се съхраняват в базата данни с помощта на вътрешно представяне, което е между 7 и 11 байта в зависимост от типа и точността. В този въпрос има повече за това , между другото.

Вашият клиент или приложение решава как да покаже стойността в четима от човека форма на низ.

Когато го направите:

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

вие имплицитно конвертирате localtimestamp в низ, използвайки NLS настройките на вашата сесия и след това го конвертирате обратно в клеймо за време. Това може случайно да промени стойността - загуба на точност - но няма да промени начина, по който стойността се съхранява вътрешно. Във вашия случай несъответствието между настройката на NLS и формата, който предоставяте, води до грешка ORA-01830.

Така че първото ви вмъкване е правилно (ако приемем, че наистина искате времето на сесията, а не времето на сървъра). Ако искате да видите съхранените стойности в конкретен формат, след това или променете настройките на NLS на сесията на вашия клиент, или за предпочитане я форматирайте изрично, когато я правите заявка, напр.:

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. Предаване на големи BLOB към съхранена процедура

  2. Накарайте марионетната компилация да се провали, когато съдържащият се SQL скрипт не се изпълни

  3. Liferay:Не е намерен подходящ драйвер

  4. Oracle получава стойност на контролната сума за блок от данни, дефиниран от клауза за избор

  5. Показване на всички екземпляри, които трябва да бъдат динамично регистрирани със слушател