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

PostgreSQL Discussion :

Petit problème d'addition de type 'time'


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 46
    Par défaut Petit problème d'addition de type 'time'
    Bonjour, dans PSQL 8.2.6, quand j'exécute la requête suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT et.nom,ed.heure FROM Groupe g INNER JOIN Edt ed ON ed.groupe=g.idGroupe INNER JOIN Etudiants et ON et.groupe=g.idGroupe WHERE ed.jour='27/02/2008' AND ((ed.heure+ed.duree)<'10:00:00');
    J'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ERREUR:  L'op�rateur n'est pas unique : time without time zone + time without time zone
    LIGNE 1 : ...idGroupe WHERE ed.jour='27/02/2008' AND ((ed.heure+ed.duree)...
                                                                   ^
    ASTUCE : n'a pas pu choisir un meilleur candidat pour l'op�rateur. Vous devez ajouter une conversion explicite de type.
    Je ne sais pas comment faire car si je fais une requête plus simple je n'ai pas de problème particulier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    SELECT et.nom,ed.heure FROM Groupe g INNER JOIN Edt ed ON ed.groupe=g.idGroupe INNER JOIN Etudiants et ON et.groupe=g.idGroupe WHERE ed.jour='27/02/2008' AND (ed.duree<'10:00:00');
         nom      |  heure   
    --------------+----------
     Coucou       | 08:15:00
     Coucou1      | 08:15:00
     Coucou2      | 08:15:00
     Coucou3      | 08:15:00
     Coucou4      | 08:15:00
     Etudiant1    | 10:15:00
     Etudiant1    | 08:15:00
     Etudiant2    | 10:15:00
     Etudiant2    | 08:15:00
     Etudiant3    | 10:15:00
     Etudiant3    | 08:15:00
     Etudiant4    | 10:15:00
     Etudiant4    | 08:15:00
     Etudiant5    | 10:15:00
     Etudiant5    | 08:15:00
     Pourquoi pas | 13:15:00
     Encore un    | 13:15:00
     Encore deux  | 13:15:00
    Je précise 'edt.duree' et 'edt.heure' sont du type time.

    Merci d'avance pour votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Par défaut
    Il n'existe pas d'opérateur + entre 2 éléments de type time (abrégé de time without time zone). PostgreSQL essai un cast implicite et trouve différents opérateurs possibles en modifiant le type d'un des 2 coté du '+'. Comme il est incapable de choisir pour toi la bonne opération, tu dois la lui préciser.
    Vu les noms que tu as choisi pour tes variables, je pense que tu ne veux additionner un time (ed.heure) avec un intervalle de temps (ed.duree).

    Essaie donc de remplacer dant ta clause WHERE ((ed.heure+ed.duree)<'10:00:00') par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((ed.heure::time+ed.duree::interval)<'10:00:00')

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 46
    Par défaut
    Bonjour,

    En effet c'était ça le problème. Merci beaucoup.

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

Discussions similaires

  1. [2.x] Problème affichage champ de type "time"
    Par hx.jonathan dans le forum Symfony
    Réponses: 2
    Dernier message: 06/11/2011, 14h08
  2. un petit problème de liste et de type
    Par sg231 dans le forum Général Python
    Réponses: 4
    Dernier message: 25/01/2008, 23h26
  3. [MySQL] addition de résultats de type "time"
    Par oceane751 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 22/02/2007, 18h07
  4. Addition de champs de type time
    Par GianT[971] dans le forum Langage SQL
    Réponses: 8
    Dernier message: 29/04/2005, 22h55
  5. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 18h55

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