web-dev-qa-db-fra.com

Comment insérer un horodatage dans Oracle?

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?

71
Mike Rifgin
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);
110
reggie
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.

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

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.

8
Dave Costa

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

2

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);
1
Sai Krishna

Tout d'abord, vous devez rendre le champ Nullable, puis si simple - au lieu de mettre une valeur, mettez ce code CURRENT_TIMESTAMP.

0
Ahuramazda

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.

0
Else

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

0
SeSpoon