sql >> Databáze >  >> RDS >> Oracle

Jak vložit časové razítko do Oracle ve specifickém formátu

Nevkládáte časové razítko v určitém formátu. Časová razítka (a data) jsou uložena v databázi pomocí interní reprezentace, která je mezi 7 a 11 bajty v závislosti na typu a přesnosti. Více o tom je v této otázce , mimo jiné.

Váš klient nebo aplikace rozhodne, jak zobrazit hodnotu ve formě řetězce čitelné pro člověka.

Když to uděláte:

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

implicitně převádíte localtimestamp na řetězec, pomocí nastavení NLS vaší relace a poté jej převést zpět na časové razítko. To může náhodně změnit hodnotu - ztratit přesnost - ale nezmění to, jak je hodnota interně uložena. Ve vašem případě nesoulad mezi nastavením NLS a formátem, který dodáváte, vede k chybě ORA-01830.

Takže vaše první vložení je správné (za předpokladu, že opravdu chcete čas relace, ne čas serveru). Pokud chcete vidět uložené hodnoty v určitém formátu pak buď změní nastavení NLS vaší klientské relace, nebo je nejlépe naformátujte explicitně, když se na ně dotazujete, např.:

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


  1. PHP Odstranit více řádků pomocí zaškrtávacího políčka

  2. Mám problém se změnou velikosti obrázku ve sloupci blob v oracle 12c

  3. Kdy přepnout na větší instanci RDS

  4. Rámec Apache Spark Job Run!