J'ai une base de données Oracle avec un champ timestamp
. Quel est le code SQL correct pour insérer une timestamp
dans ce champ?
insert
into tablename (timestamp_value)
values (TO_TIMESTAMP(:ts_val, 'YYYY-MM-DD HH24:MI:SS'));
si vous souhaitez insérer l'horodatage actuel, procédez comme suit:
insert
into tablename (timestamp_value)
values (CURRENT_TIMESTAMP);
INSERT
INTO mytable (timestamp_field)
VALUES (CURRENT_TIMESTAMP)
CURRENT_TIMESTAMP
et SYSTIMESTAMP
sont des mots réservés par Oracle à cette fin. Ils sont l'analogue d'horodatage de SYSDATE
.
INSERT INTO TABLE_NAME (TIMESTAMP_VALUE) VALUES (TO_TIMESTAMP('2014-07-02 06:14:00.742000000', 'YYYY-MM-DD HH24:MI:SS.FF'));
Le type dépend de la provenance de la valeur que vous souhaitez insérer. Si vous voulez insérer l'heure actuelle, vous pouvez utiliser CURRENT_TIMESTAMP comme indiqué dans d'autres réponses (ou SYSTIMESTAMP).
Si vous avez une heure en tant que chaîne et souhaitez la convertir en horodatage, utilisez une expression comme
to_timestamp(:timestamp_as_string,'MM/DD/YYYY HH24:MI:SS.FF3')
J'espère que les composants de format de l'heure sont explicites, à l'exception du fait que FF3 signifie 3 chiffres avec une précision inférieure à la seconde. Vous pouvez aller jusqu'à 6 chiffres de précision.
Si vous insérez à partir d'une application, la meilleure réponse peut dépendre de la manière dont la valeur de date/heure est stockée dans votre langue. Par exemple, vous pouvez mapper certains objets Java directement sur une colonne TIMESTAMP, mais vous devez comprendre les mappages de type JDBC.
Je préfère les littéraux d'horodatage ANSI:
insert into the_table
(the_timestamp_column)
values
(timestamp '2017-10-12 21:22:23');
Plus d'informations dans le manuel: https://docs.Oracle.com/database/121/SQLRF/sql_elements003.htm#SQLRF51062
Insertion de la date en sql
insert
into tablename (timestamp_value)
values ('dd-mm-yyyy hh-mm-ss AM');
Si supposons que nous voulions insérer la date du système
insert
into tablename (timestamp_value)
values (sysdate);
Tout d'abord, vous devez rendre le champ Nullable, puis si simple - au lieu de mettre une valeur, mettez ce code CURRENT_TIMESTAMP
.
On peut simplement utiliser
INSERT INTO MY_TABLE(MY_TIMESTAMP_FIELD)
VALUES (TIMESTAMP '2019-02-15 13:22:11.871+02:00');
Ainsi, vous n'aurez plus à vous soucier de la chaîne de format de date, utilisez simplement le format d'horodatage par défaut.
Fonctionne avec Oracle 11, ne sait pas si cela est le cas pour les versions Oracle antérieures.
Pour ma propre référence future:
Avec cx_Oracle, utilisez cursor.setinputsize (...):
mycursor = connection.cursor();
mycursor.setinputsize( mytimestamp=cx_Oracle.TIMESTAMP );
params = { 'mytimestamp': timestampVar };
cusrsor.execute("INSERT INTO mytable (timestamp_field9 VALUES(:mytimestamp)", params);
Aucune conversion dans la base de données nécessaire. Voir Documentation Oracle