2 votes

Oracle: ajouter des millisecondes à mon objet horodatage

Je veux ajouter des millisecondes à mon objet horodatage. Par exemple, je dois augmenter la valeur de l'horodatage de 25 millisecondes.

J'ai pris ceci comme exemple

select to_char(systimestamp,'dd-mm-yyyy hh24:mi:ss.FF') as ts 
, to_timestamp(to_char(sysdate,'dd-mm-yyyy hh24:mi:ss.')||to_char(to_number(to_char(systimestamp,'FF')) + 250) 
,'dd-mm-yyyy hh24:mi:ss.FF') as ts_1 
from dual;

cela fonctionne et augmente les millisecondes. Mais cela n'affecte pas le champ des secondes. Par exemple, si nous ajoutons 1000 millisecondes, le champ des secondes devrait idéalement être augmenté. Nous savons qu'il existe un moyen de convertir un horodatage en millisecondes. Y a-t-il un moyen de convertir les millisecondes en horodatage ? Ou s'il y a un moyen d'ajouter des millisecondes à l'objet horodatage qui reflète les changements dans le champ des secondes ?

4voto

Thorsten Kettner Points 6149

Vous ajoutez du temps à un horodatage en ajoutant un intervalle. Les intervalles peuvent descendre jusqu'aux secondes seulement, mais un intervalle de 0,001 seconde est un intervalle de millisecondes que vous pouvez multiplier par la valeur désirée. Par exemple :

select systimestamp + interval '0.001' seconde * :millisecs from dual;

2voto

MT0 Points 3403

Utilisez un littéral d'intervalle :

SELECT SYSTIMESTAMP + INTERVAL '0.025' SECOND
FROM   DUAL

ou créez dynamiquement un intervalle avec NUMTODSINTERVAL :

SELECT SYSTIMESTAMP + NUMTODSINTERVAL( 25 / 1000, 'SECOND' )
FROM   DUAL

ou, avec une variable liée :

SELECT SYSTIMESTAMP + NUMTODSINTERVAL( :milliseconds / 1000, 'SECOND' )
FROM   DUAL

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X