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

Langage SQL Discussion :

Calculer temps écoulé


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 182
    Points : 64
    Points
    64
    Par défaut Calculer temps écoulé
    Bonjour,

    Je souhaiterais calculer le temps écoulé entre 2 dates. Lorsque je le fais dans ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT sp.id_programme, sp.id_partenaire, sp.le, p.diffusion, (sp.le-p.diffusion) temps
     FROM stats_partenaires sp
    LEFT JOIN programme p ON p.id_programme = sp.id_programme
     WHERE sp.le LIKE '2008-11%'
    HAVING temps>0
    j'obtiens un chiffre qui n'est pas des secondes semble-t-il. Par exemple date1=2008-11-01 00:01:15, date2=2008-10-30 22:50:00, temps=70775115

    Quelqu'un pourrait-il me dire à quoi correspond ce chiffre ? Peut-être un timestamp ?

  2. #2
    Scorpi0
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      20081101000115  
    - 20081030225000
    -----------------------------
      70775115
    Cours d'école élémentaire quand même...
    Sinon je pense qu'en convertissant tes champs en vrai date et non en varchar, ce que je soupçonne d'être le cas, je pense que ton SGBD te donnera un nombre de jours.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 182
    Points : 64
    Points
    64
    Par défaut
    Ah oui effectivement ce n'est pas du tout ce que je veux.
    Bon il faudrait que je convertisse d'abord mes dates.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 182
    Points : 64
    Points
    64
    Par défaut
    Ok je décompose un peu plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT sp.id_programme, sp.id_partenaire, sp.le, p.diffusion, UNIX_TIMESTAMP(p.diffusion) diffusion, UNIX_TIMESTAMP(sp.le) le, (le-diffusion) temps
     FROM stats_partenaires sp
    LEFT JOIN programme p ON p.id_programme = sp.id_programme
     WHERE sp.le LIKE '2008-11%'
    HAVING temps>0
    J'obtiens exactement le même chiffre qu'avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (sp.le-p.diffusion) temps

  5. #5
    Scorpi0
    Invité(e)
    Par défaut
    Quel est ton SGBD ?

    Sous Oracle, tu utilises la fonction to_date pour la conversion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select to_date('16:25:32','HH24:MI:SS') - to_date('16:24:31','HH24:MI:SS'),
           (to_date('16:25:32','HH24:MI:SS') - to_date('16:24:31','HH24:MI:SS'))*3600*24
    from dual
    Resultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0,000706018518518519	||  61
    Tu multiplie par 3600*24 pour passer d'un nombre de jours a un nombre de seconde.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 182
    Points : 64
    Points
    64
    Par défaut
    Je suis sous Mysql.

    61 quoi ?
    Et si tu fais ton to_date avec mes exmples de dates ?

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 790
    Points : 52 817
    Points
    52 817
    Billets dans le blog
    5
    Par défaut
    une date étant une date, cette ineptie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE sp.le LIKE '2008-11%'
    ne veut RIEN DIRE !!!!

    Vous ne pouvez pas comparer des dates avec des navets ou des bourbolidrons, pas même avec des chaînes de caractères, même si SQL accepte cette syntaxe par facilité. Mais lui il fait un CAST implicite !

    Commencez par apprendre SQL. Mes livres comme mon site web sont là pour vous aider !


    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 182
    Points : 64
    Points
    64
    Par défaut
    Si je fais ça c'est mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE sp.le BETWEEN '2008-11-01 00:00:00' AND '2008-11-30 23:59:59'

  9. #9
    Scorpi0
    Invité(e)
    Par défaut
    Un p'ti bout de doc ne fait jamais de mal :

    http://dev.mysql.com/doc/refman/5.0/...functions.html

    Tu trouveras tout ce que tu dois savoir sur la manipulation de dates en MySQL.

Discussions similaires

  1. Calcul Temps écoulé entre 2 dates
    Par gweddy dans le forum iReport
    Réponses: 4
    Dernier message: 18/12/2017, 16h14
  2. [Débutant] Calculer le temps écoulé entre deux heures
    Par amine_angel80 dans le forum Assembleur
    Réponses: 2
    Dernier message: 28/05/2008, 16h23
  3. Calcul de temps écoulé
    Par Amiche dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 31/01/2008, 19h39
  4. Réponses: 1
    Dernier message: 10/05/2007, 13h22
  5. calculer le Temp écoulé
    Par ada_b dans le forum SQL
    Réponses: 1
    Dernier message: 30/11/2004, 09h44

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