Je dois effectuer des insertions dans une base de données Oracle. J'ai quelques dates .__ dans le format suivant
'23.12.2011 13:01:001'
Après la documentation, j'ai écrit les insertions to_date comme suit:
to_date('23.12.2011 13:01:01', 'DD.MM.YYYY HH24:MI:SS')
qui fonctionne correctement. Maintenant, j'ai des dates avec millisecondes avec le format
'23.12.2011 13:01:001'
J'ai essayé ce qui suit:
to_date('23.12.2011 13:01:001', 'DD.MM.YYYY HH24:MI:SSFF3')
ce qui est incorrect (génère une erreur 01821. 00000 - "format de date non reconnu").
Quelle "chaîne" dois-je utiliser pour ce format en millisecondes?
Merci d'avance!
Oracle DATE
ne stocke pas les temps avec plus de précision qu'une seconde. Vous ne pouvez pas stocker de données de précision milliseconde dans une colonne DATE
.
Vos deux options consistent à tronquer la chaîne des millisecondes avant de la convertir en DATE
, c.-à-d.
to_date( substr('23.12.2011 13:01:001', 1, 19), 'DD.MM.YYYY HH24:MI:SS' )
ou pour convertir la chaîne en une TIMESTAMP
prenant en charge la précision à la milliseconde
to_timestamp( '23.12.2011 13:01:001', 'DD.MM.YYYY HH24:MI:SSFF3' )
TO_DATE prend en charge la conversion en type de données DATE, qui ne prend pas en charge les millisecondes. Si vous souhaitez une prise en charge milliseconde dans Oracle, consultez le type de données TIMESTAMP et la fonction TO_TIMESTAMP.
J'espère que cela pourra aider.
Vous pouvez essayer ce format SS.FF
pendant millisecondes:
yyyy-mm-dd HH:MI:SS.FF
Pour plus de détails:
https://docs.Oracle.com/cd/B19306_01/server.102/b14200/functions193.htm
Pour trois chiffres millisecondes:
TO_CHAR(LN_AUTOD_UWRG_DTTM,'MM/DD/YYYY HH24:MI:SS.FF3')
Pour six chiffres millisecondes:
TO_CHAR(LN_AUTOD_UWRG_DTTM,'MM/DD/YYYY HH24:MI:SS.FF'),