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 :

[DEBUTANT] "BETWEEN" qui ne marche pas


Sujet :

Langage SQL

  1. #1
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut [DEBUTANT] "BETWEEN" qui ne marche pas
    SAlut !

    Encore une fois je suis bloqué par un problème que je ne comprend pas :
    Voila j'ai une table qui contient plusieurs attributs, l'un d'eux est de type TimeStamp, çàd qu'il va contenir la date et l'heure (ex: 30/03/2007 11:00:00)

    J'ai voulu afficher les tuplets dont la valeur de cette attribut est comprise entre 2 date, j'arrive pas !

    Voila la structure de ma Table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Id_Commande_Achat  --> Integer (ma clé)
    Date_Achat         --> Type : DateStamp
     
    ...etc
    Les tuplets actuels sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Id_Commande_Achat     |       Date_Achat
     
    1                     |      04:46:00, 30/03/2007
    2                     |      07:22:00, 30/03/2007
    3                     |      08:07:00, 30/03/2007
    j'ai lancé ma requête qui est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Select * from Commandes_Achats AS CV
    WHERE 
    ( 
    CV.Date_Achat 
    BETWEEN  
    CAST('01/02/2007' AS DATE) 
    AND  
    CAST('01/04/2007' AS DATE)  
    )
    Ben rien ne s'affiche

    je sais pas pourquoi !?
    J'ai même ajouter l'heure comme ça :
    [code]
    j'ai lancé ma requête qui est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Select * from Commandes_Achats AS CV
    WHERE 
    ( 
    CV.Date_Achat 
    BETWEEN  
    CAST('1/02/2007 00:00:00' AS DATE) 
    AND  
    CAST('01/04/2007 00:00:00' AS DATE)  
    )
    ça m'affiche même pas d'erreur

    Es que on peux pas caster le type DateStamp à Date ?
    Es que je dois changer le type de mon Attribut de DateStamp à Date ?
    J'ai pensé que ça avait une relation avec le format de la date, j'ai fais une petite recherche sur ce forum, et j'ai vu qu'on pouvais formater la date avec DATE_FORMAT (ex: DATE_FORMAT(ma_date,'%y/%m%d')), j'ai essayé avec ce mot clé, mais mon SGBD ne le reconnais pas.

    Si quelqu'un a [FONT=&quot]déjà vécu [/FONT] ce genre de problème, veut bien m'aider, parce que je suis un peu serré côté temps


    J'utilise :
    C++BuilderV6 avec PARADOX comme SGBD
    XP comme OS


    Merci d'avance !
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  2. #2
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    essaye tout simplement ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM Commandes_Achats AS CV
    WHERE 
    CV.Date_Achat BETWEEN  '20070201' AND  '20070401'

  3. #3
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut
    Salut !

    Tout d'abord, merci pour ta réponse rapide !

    J'ai essayé ce que tu m'as dis, ça m'affiche "Type missmatch in expression", c'est d'ailleur pour ça que j'ai utilisé le CAST.

    et j'ai ajouté le cast comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select * from Commandes_Ventes.db AS CV WHERE CV.Date_Vente BETWEEN 
    CAST ('20070201' AS DATE) AND  CAST('20070401' AS DATE)
    Même resultat, çàd RIEN


    Merci beacoups !

    A+
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 091
    Points : 28 362
    Points
    28 362
    Par défaut
    Et en comparant des choses comparables... ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT * FROM Commandes_Achats AS CV
    WHERE 
    ( 
    CAST(CV.Date_Achat AS DATE)
    BETWEEN  
    CAST('01/02/2007' AS DATE) 
    AND  
    CAST('01/04/2007' AS DATE)  
    )
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut
    Re

    j'ai déja essayé ça, et je viens de le réessayer, même resultat, ça m'affiche rien, je croi que c'est le problème du type de l'attribut (DateStamp), non ?

    Je compte pas dutout changer ce type...

    Merci

    A+
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  6. #6
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut
    Quand j'ai voulu caster en DateStamp il m'affiche erreur, il ne connais pas ce mot... Maintenant, j'ai modifié le type de l'attribut, et j'ai importé les données de la table, et toujours rien, et moi qui pensais que c'étais la seule issue, m***e ++
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  7. #7
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut
    J'arrive pas à croire, j'ai trouvé, il fallait inverser les jours avec le mois comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    
    SELECT * FROM Commandes_Ventes AS CV
    WHERE
    CV.Date_Vente
    BETWEEN 
    CAST('02/01/2007' AS DATE) 
    AND 
    CAST('04/01/2007' AS DATE)
    Mais...je comprend pas, j'ai vérifié Panneau Configurations->Options regionales et linguistique, le format est bien : "jj/MM/aaaa"

    Vu le temps, je vais voir ça plutard !


    Merci beaucoups les gars !

    A la prochaînne
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  8. #8
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    la config de langue de ton windows n'a rien à voir avec le format de date utilisé par la base de données
    De plus il est fort probable que le serveur soit une autre machine que la tienne

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

Discussions similaires

  1. requete between restriction qui ne marche pas
    Par xouzi dans le forum Requêtes
    Réponses: 5
    Dernier message: 02/10/2012, 09h28
  2. Réponses: 3
    Dernier message: 08/09/2003, 15h06
  3. Réponses: 9
    Dernier message: 07/05/2003, 12h57

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