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 des heures


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Fiona08
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Par défaut Comparaison des heures
    Salut à tous,

    Débutante en SQL pour oracle (10 g), j’aimerai savoir comment comparer des heures en SQL.
    J’ai fais une recherche sur le Forum et trouver des réponses à ce genre de problème, mais hélas cela ne pas vraiment aider pour mon cas.

    J’ai une table avec les colonnes début (Varchar2) et fin (Varchar2).

    NR Nom debut fin
    ----------------------------------------
    1 Equipe1 06:00:00 14:29:591
    2 Equipe2 14:30:00 22:29:59
    3 Equipe3 22:30:00 06:29:00

    J’obtiens d’une requête SQL des heures. Je dois comparer chaque fois l’heure obtenu avec les heures de debut et fin pour retrouver le NR de chaque Equipe.

    Mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nr
    FROM MaTable
    where '06:30:00' BETWEEN debut AND fin
    fonctionne tout fois que l’heure entrée est soit: 06:00:00, 14:29:59, 14:30:00, 22:29:59, 22:30:00 ou 06:29:00

    Mais des que j’introduis par exemple '22:30:00' je n’obtient aucun résultat. Pourquoi?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nr
    FROM MaTable
    where '22:30:00' BETWEEN debut AND fin
    Avec “IN” j’ai le même problème. Quelqu’un a-t-il une idée?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nr
    FROM MaTable
    where '23:00:00' IN (debut, fin)
    Quelqu’un a t’il une idée comment comparer des heure en SQL pour oracle?


    Merci pour vos suggestions
    Fiona

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    utilise le type DATE plutôt que VARCHAR2 et comme le jour n'a pas d'importance tu peux mettre 01/01/2000

  3. #3
    Membre confirmé Avatar de Fiona08
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Par défaut
    Citation Envoyé par orafrance Voir le message
    utilise le type DATE plutôt que VARCHAR2 et comme le jour n'a pas d'importance tu peux mettre 01/01/2000
    Salut orafrance,

    je crois que je ne peux pas changer la table comme je veux, ou alors ajouter une date aux colonnes debut et fin, car il ya plusieurs applications qui utlisent cette table. Et demander qu'on la change pour que je puisse resoudre mon problemm, je pense que ce n'est pas possible.

    Ou alors n'ai je pas bien compris ta proposition?

    Fiona

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    tu peux aussi faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nr
    FROM MaTable
    WHERE TO_DATE('01/01/2000 06:30:00',DD/MM/YYYY') BETWEEN TO_DATE('01/01/2000 '|| debut,DD/MM/YYYY') AND TO_DATE('01/01/2000 '|| fin,DD/MM/YYYY')
    c'est évidemment moins élégant

  5. #5
    Membre confirmé Avatar de Fiona08
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Par défaut
    Citation Envoyé par orafrance Voir le message
    tu peux aussi faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nr
    FROM MaTable
    WHERE TO_DATE('01/01/2000 06:30:00',DD/MM/YYYY') BETWEEN TO_DATE('01/01/2000 '|| debut,DD/MM/YYYY') AND TO_DATE('01/01/2000 '|| fin,DD/MM/YYYY')
    Salut,

    j'ai essayé ton code, mais j'ai l'erreur suivante:
    ORA-01830 date format picture ends before convertingentire input string
    Je vais essayer de voir sur google la signification.

    Fiona

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 77
    Par défaut
    La solution proposée ne marchera pas selon moi.

    Ton problème vient de ta ligne qui concerne l'équipe3. En fait, elle est à cheval sur 2 jours et c'est aussi pour cela que ton between ne ramène rien pour les heures entre 22:30 et 05:59.

    Peux-tu rajouter une ligne dans ta table?

    NR Nom debut fin
    ----------------------------------------
    1 Equipe1 06:00:00 14:29:59
    2 Equipe2 14:30:00 22:29:59
    3 Equipe3 22:30:00 23:59:59
    4 Equipe3 00:00:00 05:59:59

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

Discussions similaires

  1. [XL-2003] Comparaison des heures de pause théorie/pratique
    Par willou893 dans le forum Excel
    Réponses: 8
    Dernier message: 11/07/2013, 10h40
  2. Comparaison des heures
    Par Paladyn dans le forum Débuter
    Réponses: 6
    Dernier message: 24/11/2011, 15h05
  3. Comparaison des dates et heures
    Par IcedLand dans le forum Sql Developer
    Réponses: 1
    Dernier message: 21/09/2007, 10h04
  4. [CR] Additionner des heures
    Par sbis dans le forum Formules
    Réponses: 4
    Dernier message: 22/03/2004, 15h34
  5. [TIME] Gestion des heures
    Par Seb7 dans le forum Débuter
    Réponses: 2
    Dernier message: 10/07/2003, 16h28

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