IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Moyenne sur des heures sur format TIMESTAMP


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 124
    Par défaut Moyenne sur des heures sur format TIMESTAMP
    Bonjour,

    J'ai une table qui de LOG qui contient le nom de fichier et la date au format TIMESTAMP à laquelle on reçoit le fichier.

    Je voudrais calculer l'heure moyenne à laquelle on reçoit les fichiers.

    Exemple de données :

    NOM_FICHIER ----------------- FILE_RECEP_FIC
    ADRESSE ----------------- 10/05/2018/ 09:06:00
    ADRESSE ---------------- 28/08/2018 04:01:00
    ADRESSE --------------- 06/08/2018 04:01:00
    ADRESSE ---------------- 05/04/2018 09:27:00
    ADRESSE --------------- 21/08/2018 04:03:00
    ADRESSE --------------- 09/06/2018 10:18:00
    ADRESSE --------------- 21/08/2018 04:03:00

    Merci d'avance pour votre retour

  2. #2
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 124
    Par défaut
    SOLUTION TROUVEE :

    Select
    NOM_COLONNE,
    TIME '00:00:00'
    + CAST(AVG(EXTRACT(HOUR FROM COLONNE_TIMESTAMP) * 3600 +
    EXTRACT(MINUTE FROM COLONNE_TIMESTAMP) * 60 +
    EXTRACT(SECOND FROM COLONNE_TIMESTAMP)) AS INT) * INTERVAL '00:00:01' HOUR TO SECOND
    FROM NOM_TABLE
    Group by NOM_COLONNE

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Attention avec les extractions d'heure de timestamp, il donne l'heure UTC

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT EXTRACT(HOUR FROM SYSTIMESTAMP), SYSTIMESTAMP, SYSDATE
    FROM dual
     
    EXTRACT(HOURFROMSYSTIMESTAMP)	 : 14	
    SYSTIMESTAMP : 11/01/2019 15:16:28.501618 +01:00
    SYSDATE : 11/01/2019 15:16:28
    Il est plus simple de transformer le timestamp en Nb de secondes depuis le début de journée, faire l'avg dessus, puis de rajouter ce nombre de seconde à une date 0h (aka Trunc(sysdate)) pour la convertir en HH24:MI:SS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT TO_CHAR(TRUNC(SYSDATE) + AVG(TO_NUMBER(TO_CHAR(colonne_timestamp, 'SSSSS'))) / 24 / 60 / 60, 'HH24:MI:SS') heure_moyenne
    FROM	
    (	SELECT CAST(TO_DATE('10/05/2018 09:06:00', 'DD/MM/RRRR HH24:MI:SS') AS TIMESTAMP) COLONNE_TIMESTAMP FROM dual
    UNION ALL SELECT CAST(TO_DATE('28/08/2018 04:01:00', 'DD/MM/RRRR HH24:MI:SS') AS TIMESTAMP) FROM dual
    UNION ALL SELECT CAST(TO_DATE('06/08/2018 04:01:00', 'DD/MM/RRRR HH24:MI:SS') AS TIMESTAMP) FROM dual
    UNION ALL SELECT CAST(TO_DATE('05/04/2018 09:27:00', 'DD/MM/RRRR HH24:MI:SS') AS TIMESTAMP) FROM dual
    UNION ALL SELECT CAST(TO_DATE('21/08/2018 04:03:00', 'DD/MM/RRRR HH24:MI:SS') AS TIMESTAMP) FROM dual
    UNION ALL SELECT CAST(TO_DATE('09/06/2018 10:18:00', 'DD/MM/RRRR HH24:MI:SS') AS TIMESTAMP) FROM dual
    UNION ALL SELECT CAST(TO_DATE('21/08/2018 04:03:00', 'DD/MM/RRRR HH24:MI:SS') AS TIMESTAMP) FROM dual)
     
    HEURE_MOYENNE
    06:25:34

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion de projet: encodage des heures sur des tâches
    Par Terminator dans le forum Gestion de projet
    Réponses: 2
    Dernier message: 03/02/2015, 11h10
  2. [11gR2] Index cassé avec des heures sur des dates
    Par Golgotha dans le forum Oracle
    Réponses: 3
    Dernier message: 12/12/2013, 14h54
  3. calcul sur des heures
    Par pascale86 dans le forum Access
    Réponses: 5
    Dernier message: 22/12/2005, 16h22
  4. Opération sur des heures dans Excel
    Par mirascheat dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/12/2005, 10h34
  5. Commande date. Faire des opération sur l'heure?
    Par fidififouille dans le forum Linux
    Réponses: 9
    Dernier message: 23/08/2004, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo