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 :

Requête SQL avec filtre de type date


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    gestionnaire de production
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : gestionnaire de production
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Requête SQL avec filtre de type date
    Bonjour tout le monde,
    voila après une recherche minutieuse sur mon problème sans résultat concluant je me tourne vers vous pour votre aide si précieuse,
    mon problème est simple je n'arrive pas a filtrer une table avec une requête SQL ayant comme filtre une date
    la table "TabEvent" : (id_Event (int), date_event(date))
    la requete est du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM "TabEvent" 
    WHERE date_Ivent = "20/02/2015"
    l'erreur reçu est "type miss match in expression"
    j'ai essayer tout les type d’écriture que j'ai trouver sur le net sans succès

    merci pour tout l'aide que vous pouvez me donner

    NB: j'utilise le bon vieux delphi7 avec SQL Explorer 4 fourni avec

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    Bonjour et Bienvenue,

    A ma connaissance, Delphi 7 est fourni avec DBExplorer et non SQL Explorer.
    Ceci ne nous renseigne pas vraiment sur le Type de Base de données utilisé puisque DBExplorer utilise BDE .
    Toutefois chaque SGBD (au sens large) a sa "représentation interne" pour les dates

    j'ai essayé tout les types d’écriture que j'ai trouvé sur le net sans succès
    c.a.d ?

    s'il s'agissait de Paradox , ceci fonctionne (notez qu'il faut exprimer sous la forme mm/dd/yyyy mais il est aussi possible d'utiliser la forme dd.mm.yyyy)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM TabEvent 
    WHERE date_Ivent = '02/20/2015'
    une possibilité plus générale est d'utiliser le CAST(<Valeur> AS DATE)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Vous pouvez essayer aussi avec une valeur littérale dont l'ordre des valeurs est sans surprise. Par exemple, la norme ISO : YYYY-MM-DD, soit "2015-02-20".

    Le mieux étant de passer par une requête paramétrée. Comme ça vous passez réellement un argument de type date à la base de données.

    Essayez de regarder vers ce topic : http://www.developpez.net/forums/d77...ee-delphi-7-a/

    Ou de poser votre question dans le forum Delphi.
    On ne jouit bien que de ce qu’on partage.

  4. #4
    Candidat au Club
    Homme Profil pro
    gestionnaire de production
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : gestionnaire de production
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour et Bienvenue,

    A ma connaissance, Delphi 7 est fourni avec DBExplorer et non SQL Explorer.
    Ceci ne nous renseigne pas vraiment sur le Type de Base de données utilisé puisque DBExplorer utilise BDE .
    Toutefois chaque SGBD (au sens large) a sa "représentation interne" pour les dates


    c.a.d ?

    s'il s'agissait de Paradox , ceci fonctionne (notez qu'il faut exprimer sous la forme mm/dd/yyyy mais il est aussi possible d'utiliser la forme dd.mm.yyyy)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM TabEvent 
    WHERE date_Ivent = '02/20/2015'
    une possibilité plus générale est d'utiliser le CAST(<Valeur> AS DATE)
    Merci pour ta repense,

    je savais bien qu'elle étai si simple, en effet c'est bien du PARADOX et voici ce que j'ai fait

    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
     procedure TForm1.btFiltreClick(Sender: TObject);
      Var
       ChageDate: String; 
      begin
       ChangDate := FiltreDoc.Text[4] + FiltreDoc.Text[5] + FiltreDoc.Text[3] + FiltreDoc.Text[1] + FiltreDoc.Text[2]
                        + RightStr(FiltreDoc.Text,5);
                    { je sais qu'il exeste une fonction pour cela mais je l'est fait mois même ;)}
        with TQuery.Create(nil) do
         begin
          DataBaseNAme := DBN;
          SQl.Clear;
          SQL.Text := 'SELECT * FROM "TabEvent" WHERE dat =  CAST (' + QuotedStr(ChangDate) + ' as Date)';
          Active := True;
          Free;
         end;
      end;
    et ça marche très bien




    NB: pour info c'est bien SQL explorer V4.00

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Je ne peux pas laisser passer ça ! puisqu'il s'agit d'une requête au sein d'un programme Delphi

    a) il aurait fallu poser la question sur le forum Delphi/Base de Données
    b) utiliser une requête paramétrée
    c) je ne sais comment est créé changdate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ChangDate := FiltreDoc.Text[4] + FiltreDoc.Text[5] + FiltreDoc.Text[3] + FiltreDoc.Text[1] + FiltreDoc.Text[2]
                        + RightStr(FiltreDoc.Text,5);
    mais il est certain que une date normalisée serait mieux (utilisation d'un TDateTimePicker par exemple) les risques d'erreurs de saisie sont trop nombreux !
    d) il y a un free qui me plait pas beaucoup, sauf si le traitement total n'est pas indiqué

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
       // changdate : TDateTime
       with TQuery.Create(nil) do
         begin
          DataBaseNAme := DBN;
          // SQl.Clear; // inutile
          SQL.Text := 'SELECT * FROM "TabEvent" WHERE dat =:PD';
          ParamByName('PD').asDateTime:=ChangDate;
          Active := True;
          // traitement
         Active:=False;
          Free; 
      end;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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

Discussions similaires

  1. Requête SQL avec une condition portant sur date
    Par kekule10 dans le forum PyQt
    Réponses: 3
    Dernier message: 03/08/2014, 01h56
  2. [AC-2007] Requête sql avec union et format date
    Par keita00 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/03/2012, 17h19
  3. [AC-2002] Requête SQL avec date => Incompatibilité de type
    Par waici dans le forum VBA Access
    Réponses: 3
    Dernier message: 31/08/2009, 09h59
  4. Requête SQL avec date
    Par loreleï85 dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 12/03/2007, 14h11
  5. Requête SQL avec date
    Par misscricri dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 20/02/2007, 17h13

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