Maison >base de données >tutoriel mysql >Comment calculer la différence en millisecondes entre les horodatages dans 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!