Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So fügen Sie einen Zeitstempel in Oracle in einem bestimmten Format ein

Sie fügen keinen Zeitstempel in einem bestimmten Format ein. Zeitstempel (und Datumsangaben) werden in der Datenbank in einer internen Darstellung gespeichert, die je nach Typ und Genauigkeit zwischen 7 und 11 Byte groß ist. Dazu gibt es mehr in dieser Frage , unter anderem.

Ihr Client oder Ihre Anwendung entscheidet, wie der Wert in einer für Menschen lesbaren Zeichenfolgenform angezeigt wird.

Wenn Sie dies tun:

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

Sie konvertieren implizit den localtimestamp in eine Zeichenfolge, indem Sie die NLS-Einstellungen Ihrer Sitzung verwenden und sie dann wieder in einen Zeitstempel konvertieren. Das kann übrigens den Wert ändern - Genauigkeit verlieren - aber nicht ändern, wie der Wert intern gespeichert wird. In Ihrem Fall führt die Diskrepanz zwischen der NLS-Einstellung und dem von Ihnen bereitgestellten Format zu einem ORA-01830-Fehler.

Ihre erste Einfügung ist also korrekt (vorausgesetzt, Sie möchten wirklich die Sitzungszeit, nicht die Serverzeit). Wenn Sie sehen möchten Die gespeicherten Werte in einem bestimmten Format ändern dann entweder die NLS-Einstellungen Ihrer Clientsitzung oder formatieren sie vorzugsweise explizit, wenn Sie sie abfragen, z. B.:

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