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 :

Comparaison de date/heure


Sujet :

SQL Oracle

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 15
    Points : 5
    Points
    5
    Par défaut Comparaison de date/heure
    Bonjour,

    Je sollicite votre aide pour la conception d'une requête SQL sous Oracle. Je m'explique, j'ai une table avec plusieurs champs dont une date_debut, une heure_debut, une date_fin et une heure_fin. Les dates sont de format (JJ/MM/AAAA) et les heures de format (HH:MM). Maintenant j'aimerais savoir comment récupérer le délai entre la date/heure début et la date/heure fin. J'ai donc essayé de tout convertir en minutes en faisant (date_fin - date_debut)*1440 + (heure_fin - heure_debut) mais ça ne fonctionne pas. En effet la différence de date fonctionne mais pas celle des heures. Où alors il faudrait que je fasse la différence des heures * 60 + la différence des minutes mais je ne sais pas comment faire pour séparer les heures et les minutes.

    Quelqu'un pourrait-il m'aider ? Si vous avez une autre solution je suis preneur aussi.

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 812
    Points
    30 812
    Par défaut
    Quel est le TYPE des données ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Les dates dont de type DATE et les heures sont de type VARCHAR2.

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    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
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    transforme les dates + heures en vrai dates (avec heure intégrée)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_date( to_char(date_deb, 'DD/MM/RRRR') ||' '|| heure_deb, 'DD/MM/RRRR HH24:MI')
    Ensuite tu fais une différence de dates (ça te donnera un nb de jours) donc tu multiplie par 24 pour avoir le nb d'heure, etc..
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    avec un SUBSTR

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE lsc_t AS
    SELECT DATE '2000-01-01' d1, '23:59' h1, DATE '2000-01-02' d2, '00:00' h2
    FROM DUAL;
     
    SELECT d1, h1, d2, h2,
             (d2 - d1) * 1440
           + (SUBSTR (h2, 1, 2) - SUBSTR (h1, 1, 2)) * 60
           + SUBSTR (h2, 4)
           - SUBSTR (h1, 4) as "DIFFERENCE"
      FROM lsc_t;
    D1        H1    D2        H2    DIFFERENCE
    --------- ----- --------- ----- ----------
    01-JAN-00 23:59 02-JAN-00 00:00          1

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup, ça fonctionne à présent. Pour info j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (date_fin - date_debut)*1440 + (to_number(substr(heure_fin,1,2)) - to_number(substr(heure_debut,1,2)))*60 + (to_number(substr(heure_fin,4,2)) - to_number(substr(heure_debut,4,2)))
    Ce qui me donne le délai en minutes

    Par contre je vois que le "to_number" n'est pas nécessaire ?

    Autre petite question, j'aimerais rajouter dans ma requête une clause dans le "where" par rapport à ce délai (ex: délai inférieur à ...). Comment faire sans avoir à retaper toute la formule ?

    Merci.

  7. #7
    Membre confirmé Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Points : 603
    Points
    603
    Par défaut
    Citation Envoyé par stephane160 Voir le message
    ...Comment faire sans avoir à retaper toute la formule ?
    Sous-requete.

    Nicolas.

  8. #8
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    le to_number, c'est bien de le mettre comme tu as fait. Quant a retaper la formule, ca n'est pas un probleme en soit, non?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Non ce n'est pas un problème de tout retaper une seconde fois, c'est juste que j'essayais de trouver un moyen "plus propre".
    Et en utilisant une variable avec un "define" c'est possible ?

Discussions similaires

  1. Comparaison de date / soustraire 1 heure
    Par fabien14 dans le forum Langage
    Réponses: 3
    Dernier message: 14/05/2010, 16h57
  2. Comparaison date heure
    Par aurelie83 dans le forum SQL
    Réponses: 3
    Dernier message: 16/05/2008, 19h14
  3. Comparaison des dates et heures
    Par IcedLand dans le forum Sql Developer
    Réponses: 1
    Dernier message: 21/09/2007, 10h04
  4. [SQL SERVER / VBDOTNET] comparaison de date/heure
    Par t1marlartiste dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/06/2007, 09h51
  5. [DEBUTANT]Comparaison sur date et heure
    Par tripper.dim dans le forum Oracle
    Réponses: 15
    Dernier message: 15/11/2005, 18h25

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