wake-up-neo.net

Wie füge ich einen Zeitstempel in Oracle ein?

Ich habe eine Oracle-Datenbank mit einem timestamp-Feld. Was ist der richtige SQL-Code, um eine timestamp in dieses Feld einzufügen?

71
Mike Rifgin
insert
into tablename (timestamp_value)
values (TO_TIMESTAMP(:ts_val, 'YYYY-MM-DD HH24:MI:SS'));

wenn Sie möchten, dass der aktuelle Zeitstempel eingefügt wird, dann:

insert
into tablename (timestamp_value)
values (CURRENT_TIMESTAMP);
110
reggie
INSERT
INTO    mytable (timestamp_field)
VALUES  (CURRENT_TIMESTAMP)

CURRENT_TIMESTAMP und SYSTIMESTAMP sind für diesen Zweck von Oracle reservierte Wörter. Sie sind das Zeitstempelanalog von SYSDATE.

22
Quassnoi
INSERT INTO TABLE_NAME (TIMESTAMP_VALUE) VALUES (TO_TIMESTAMP('2014-07-02 06:14:00.742000000', 'YYYY-MM-DD HH24:MI:SS.FF'));
15
Kash

Die Art hängt davon ab, woher der Wert kommt, den Sie einfügen möchten. Wenn Sie die aktuelle Uhrzeit einfügen möchten, können Sie CURRENT_TIMESTAMP wie in anderen Antworten (oder SYSTIMESTAMP) gezeigt verwenden.

Wenn Sie eine Zeit als Zeichenfolge haben und diese in einen Zeitstempel konvertieren möchten, verwenden Sie einen Ausdruck wie

to_timestamp(:timestamp_as_string,'MM/DD/YYYY HH24:MI:SS.FF3')

Die Zeitformatkomponenten sind, wie ich hoffe, selbsterklärend, mit der Ausnahme, dass FF3 3 Stellen mit einer Genauigkeit von weniger als einer Sekunde bedeutet. Sie können eine Genauigkeit von bis zu 6 Stellen erreichen.

Wenn Sie aus einer Anwendung einfügen, hängt die beste Antwort möglicherweise davon ab, wie der Datums-/Uhrzeitwert in Ihrer Sprache gespeichert wird. Sie können beispielsweise bestimmte Java-Objekte direkt einer TIMESTAMP-Spalte zuordnen, müssen jedoch die Zuordnungen von JDBC-Typen verstehen.

8
Dave Costa

Ich bevorzuge ANSI-Zeitstempel-Literale:

insert into the_table 
  (the_timestamp_column)
values 
  (timestamp '2017-10-12 21:22:23');

Weitere Informationen im Handbuch: https://docs.Oracle.com/database/121/SQLRF/sql_elements003.htm#SQLRF51062

Datum in SQL einfügen

insert
into tablename (timestamp_value)
values ('dd-mm-yyyy hh-mm-ss AM');

Angenommen, wir wollten das Systemdatum einfügen

insert
into tablename (timestamp_value)
values (sysdate);
1
Sai Krishna

Zuerst müssen Sie das Feld auf Null setzen, danach ist es so einfach - statt einen Wert einzugeben, setzen Sie diesen Code CURRENT_TIMESTAMP.

0
Ahuramazda

Man kann einfach verwenden

INSERT INTO MY_TABLE(MY_TIMESTAMP_FIELD)
VALUES (TIMESTAMP '2019-02-15 13:22:11.871+02:00');

Auf diese Weise brauchen Sie sich nicht um Datumsformat-Zeichenketten zu kümmern, verwenden Sie einfach das Standard-Zeitstempelformat.

Funktioniert mit Oracle 11, habe keine Ahnung, ob dies für frühere Oracle-Versionen der Fall ist.

0
Else

Für meine eigene zukünftige Referenz:

Bei cx_Oracle verwenden Sie cursor.setinputsize (...):

mycursor = connection.cursor();

mycursor.setinputsize( mytimestamp=cx_Oracle.TIMESTAMP );
params = { 'mytimestamp': timestampVar };
cusrsor.execute("INSERT INTO mytable (timestamp_field9 VALUES(:mytimestamp)", params);

Keine Konvertierung in der Datenbank erforderlich. Siehe Oracle-Dokumentation

0
SeSpoon