Maison >base de données >tutoriel mysql >Comment calculer la différence en millisecondes entre les horodatages dans Oracle ?

Comment calculer la différence en millisecondes entre les horodatages dans Oracle ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-11 21:01:49407parcourir

How to Calculate the Millisecond Difference Between Timestamps in Oracle?

Différence en millisecondes entre les horodatages calculés dans la base de données Oracle

Le calcul de la différence en millisecondes entre deux horodatages dans une base de données Oracle nécessite un examen attentif des nuances spécifiques à la plate-forme ainsi que du format de sortie requis.

Lorsque deux variables TIMESTAMP sont soustraites, le résultat est une valeur INTERVAL DAY TO SECOND. Cet intervalle contient un nombre différent de millisecondes et/ou de microsecondes, selon le système d'exploitation utilisé par la base de données. Par exemple, les bases de données Windows fournissent généralement des millisecondes, tandis que les bases de données Unix ont tendance à utiliser des microsecondes.

Extraire la composante temporelle

Pour récupérer une composante temporelle spécifique à partir d'une valeur INTERVAL DAY TO SECOND, vous pouvez utiliser la fonction EXTRACT. Cette fonction permet d'extraire des éléments individuels tels que les jours, les heures, les minutes et les secondes.

Calculer le total des millisecondes

Si vous avez besoin du nombre total de millisecondes entre les horodatages, vous pouvez convertir chaque composant extrait en millisecondes et en somme. Cependant, il est souvent plus pratique de conserver la représentation INTERVALLE JOUR À SECONDE ou de créer différentes colonnes pour les heures, les minutes et les secondes.

Exemple de calcul :

Considérons l'exemple suivant :

<code class="language-sql">select systimestamp - to_timestamp('2012-07-23', 'yyyy-mm-dd')
from dual;</code>

Cette requête récupère le décalage horaire sous forme de valeur INTERVAL DAY TO SECOND :

<code>+000000000 14:51:04.339000000</code>

En utilisant la fonction EXTRACT, nous pouvons extraire les composants du jour, de l'heure, des minutes et des secondes :

<code class="language-sql">select extract(day from diff) days,
       extract(hour from diff) hours,
       extract(minute from diff) minutes,
       extract(second from diff) seconds
from (select systimestamp - to_timestamp('2012-07-23', 'yyyy-mm-dd') diff
            from dual);</code>

Le résultat est :

<code>      DAYS      HOURS    MINUTES    SECONDS
---------- ---------- ---------- ----------
         0         14         55     37.936</code>

Pour calculer le total des millisecondes, nous combinons ces composants :

<code class="language-sql">select extract(day from diff)*24*60*60*1000 +
       extract(hour from diff)*60*60*1000 +
       extract(minute from diff)*60*1000 +
       round(extract(second from diff)*1000) total_milliseconds
from (select systimestamp - to_timestamp('2012-07-23', 'yyyy-mm-dd') diff
            from dual);</code>

Résultats de retour :

<code>TOTAL_MILLISECONDS
------------------
          53831842</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn