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 :

where avec champ TIMESTAMP


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 114
    Par défaut where avec champ TIMESTAMP
    Bonjour,

    soit la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT CHAMP1, CHAMP2, CHAMP3 FROM MaTable
    WHERE CHAMP2 = ...
    avec CHAMP2 de type TIMESTAMP,

    j'ai 2 questions :

    1) je voudrais savoir comment écrire ma condition WHERE, par exemple si je mettais comme date 01/02/2003 23:59:59 ?

    2) est-il possible d'obtenir la date la plus ancienne en écrivant ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT CHAMP1, MIN(CHAMP2), CHAMP3 FROM MaTable
    NB : je travaille avec SQL Server.

  2. #2
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 539
    Billets dans le blog
    10
    Par défaut
    La conversion entre un timeStamp et un smallDateTime étant implicite je pense qu'il n'y a pas de problème.

    Penses éventuellement à exécuter la commande SQL pour définir le format de date traité par la requête


  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 114
    Par défaut
    je n'est pas complètement saisi ta réponse...

    tu t'es pas trompé de topic ?

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    Pour éviter les problèmes de conversion, l'utilisation des Paramètres (Parameters et ParamByName) sont bien utile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CHAMP1, CHAMP2, CHAMP3 FROM MaTable
    WHERE CHAMP2 = :ParamChamp2
    Si ADO pour SQL Server, ... la propriété Parameters n'est pas présente dans tous les composant Query, on peut utiliser sur certains directement ParamByName

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ADOQuery.SQL.Text := '...';
    ADOQuery.Parameters.ParamByName('ParamChamp2').AsDateTime := Now();
    ADOQuery.Open();
    Enfin, il est toujours bon de connaitre les fonctions de conversion, regarde si tu as des fontions DATE_FORMAT, DATE_TO_STR, ... je ne connais pas SQL Server ...

    Pour le Min, en MySQL et Oracle sur un TimeStamp, cela fonctionne, on peut penser que sur SQL Server, aussi ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 114
    Par défaut
    j'ai oublié de préciser que j'utilise InterBase et non ADO.

    Le MIN ne fonctionne que s'il est seul dans la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT MIN(CHAMP2) FROM MaTable
    fonctionne

    mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT CHAMP1, MIN(CHAMP2), CHAMP3 FROM MaTable
    fonctionne pas.

    J'ai essayé aussi ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT L1.CHAMP1, L1.CHAMP2, L1.CHAMP3 FROM MaTable L1, MaTable L2 
    WHERE L1.CHAMP2 = (SELECT MIN(CHAMP2) FROM MaTable L2 
    WHERE L1.CHAMP1= L2.CHAMP1 AND L1.CHAMP2 = L2.CHAMP2 AND L1.CHAMP3 = L2.CHAMP3) ;
    mais bizarrement ça ne marche pas non plus

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut

    Citation Envoyé par sam-sam
    NB : je travaille avec SQL Server.

    Citation Envoyé par sam-sam
    j'ai oublié de préciser que j'utilise InterBase et non ADO.

    Tu es sur ?
    InterBase c'est un SGBD, comme SQL Server, on peut pas travailler avec l'un sur l'autre ... tu confonds ! On est mal barré !
    si tu n'utilise pas ADO est-ce donc BDE, DBExpress, CoreDac, ... ?

    Le Min ne peut fonctionner qu'avec un Group By ! c'est une fonction d'aggrégat ! faudrait peut-être se renseigner avant de poser des questions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CHAMP1, MIN(CHAMP2), CHAMP3 FROM MaTable GROUP BY CHAMP1, CHAMP3
    Attention cela donnera le plus petit CHAMP2 pour chaque couple de CHAMP1 et CHAMP3 ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

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

Discussions similaires

  1. [AC-97] clause Where avec 2 champs
    Par docjo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/08/2010, 18h37
  2. Réponses: 5
    Dernier message: 28/08/2009, 18h42
  3. WHERE avec champ renseigné par l'utilisateur
    Par yuyuch dans le forum iReport
    Réponses: 1
    Dernier message: 20/03/2008, 12h11
  4. soucis avec champ timestamp
    Par bstages2000 dans le forum Oracle
    Réponses: 5
    Dernier message: 10/12/2007, 18h44
  5. where avec un champ timestamp
    Par DBBB dans le forum SQL
    Réponses: 3
    Dernier message: 26/05/2004, 11h20

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