web-dev-qa-db-fra.com

Comment puis-je obtenir la différence en minutes à partir de 2 colonnes d'horodatage?

Je n'arrive pas à comprendre cela. Juste besoin de la différence en minutes entre 2 colonnes d'horodatage Oracle.

END_TS                                  START_TS
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
11-NOV-13 01.52.14.000000 PM                            11-NOV-13 01.51.14.000000 PM
11-NOV-13 02.20.47.000000 PM                            11-NOV-13 02.19.47.000000 PM
18-NOV-13 12.44.54.000000 PM                            18-NOV-13 12.34.02.000000 PM
22-NOV-13 12.02.09.000000 AM                            22-NOV-13 12.02.08.000000 AM
5
KingKongFrog
select
  round(
    (cast(current_timestamp as date) - cast(<other_timestamp> as date))
    * 24 * 60
  ) as diff_minutes
from <some_table>;

C'est ce que j'ai utilisé pour calculer la différence entre l'horodatage actuel et une entrée de table de rythme cardiaque pour la surveillance de la latence.

11
Dirk

En supposant que votre table s'appelle TS:

SELECT (EXTRACT (DAY FROM (end_ts-start_ts))*24*60*60+
EXTRACT (HOUR FROM (end_ts-start_ts))*60*60+
EXTRACT (MINUTE FROM (end_ts-start_ts))*60+
EXTRACT (SECOND FROM (end_ts-start_ts)))/60
FROM TS;

Le bon sens, pour être honnête.

Réduisez tout en quelques secondes

  • Une minute est de 60 secondes
  • Une heure est de 60 minutes (ou 60 * 60 secondes)
  • Un jour est de 24 heures ou (24 * 60 * 60)

Nous effectuons la différence pour chacun des éléments, extrayons toutes les valeurs, les convertissons en base (seconde), puis les redimensionnons au niveau de granularité souhaité (minutes).

(Peut nécessiter un EXTRACT(YEAR aussi).

9
Philᵀᴹ

Cela semble être une meilleure option

select (cast(your_column1 as date) - date '1970-01-01')*24*60*60 
     - (cast(your_column2 as date) - date '1970-01-01')*24*60*60 
from your_table;
0
Abdus Samad