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

Bases de données Delphi Discussion :

Comment insérer la date actuelle dans une requête SQL ?


Sujet :

Bases de données Delphi

  1. #1
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Comment insérer la date actuelle dans une requête SQL ?
    bonjour, je suis un débutant delphi et je veux faire la requete suivante
    dans ma base de données crée avec pardox (delphi5) j'ai la table formation qui contient nom_employé, ..., date_début_formation, date_fin_formation
    ce que je veux c afficher les employés qui sont en cours de formation par rapport a la date du jour, (du genre select * from formation where "date du jour" between date_début_formation and date_fin_formation)

    j'utilise un dbgrid relié a un query1 dans le quel je veux ecrire cette requete pour qu'elle s'applique sur le dbgrid

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    With Query1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * from formation');
      SQL.Add('Where date_début_formation >= ' + Quotedstr(FormatDateTime('DD/MM/YYYY',Now)));
      SQL.Add('and date_fin_formation <= ' + QuotedStr(FormatDateTime('DD/MM/YYYY',Now)));
      Open;
    end;
    N'utilisant pas paradox depuis un bon mment je ne sais pas si le format de date est le bon.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    merçi beacoup Rayek pour ta réponse rapide je vais l'essayer et je vous tiens au courant.

  4. #4
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    j'obtiens le message "difference de type dans une meme expression" et pourtant date_début_formation et date_fin_formation sont de type date!

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    il te faut voir pour le format de la date qui peut être DD/MM/YYYY ou MM/DD/YYYY (je ne sais plus comment c'est en paradox)
    Essaie aussi sans les QuotedStr.

    Chaque base de données à son système pour l'appellation des dates, donc la il te faut voir la documentation ou faire une recherche.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Il reste toujours la solution d'écrire une requête paramétrée. C'est selon moi la méthode la plus simple, ainsi on évite les problèmes de format de date:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    With Query1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * from formation');
      SQL.Add('Where date_debut_formation >= :DateDuJour');
      SQL.Add('and date_fin_formation <= :DateDuJour');
      Parameters.ParamByName('DateDuJour').Value := Date;
      Open;
    end;
    @+ Claudius

  7. #7
    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
    je suis plutôt d'accord avec claudius sur le passage par paramètre mais sinon il y a aussi la possibilité du CAST

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    With Query1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * from formation');
      SQL.Add('Where date_début_formation >= CAST(' + Quotedstr(FormatDateTime('DD/MM/YYYY',Now))+' AS DATE)');
      SQL.Add('and date_fin_formation <= CAST(' + QuotedStr(FormatDateTime('DD/MM/YYYY',Now))+' AS DATE)');
      Open;
    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

  8. #8
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    merçi bcp a tous! ca marche enfin vous m'avez sauvé, merçi sergiomaster j'ai fait ta solution et ça marche trés bien
    encore 1000 merçi a tous!.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/07/2009, 10h51
  2. Comparer date/heure dans une requête SQL
    Par ach152 dans le forum Débuter
    Réponses: 9
    Dernier message: 13/07/2008, 14h24
  3. Insérer des champs vides dans une requête sql
    Par js8bleu dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/02/2008, 15h00
  4. [SQL] insérer des variables php dans une requête sql
    Par lili38 dans le forum PHP & Base de données
    Réponses: 28
    Dernier message: 22/06/2007, 16h38
  5. [SQL] Comment insérer une variable php dans une requête SQL ?
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/05/2007, 08h47

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