RESULTAT REQUETE SQL ERRONE

Résolu
bigbik Messages postés 159 Date d'inscription   Statut Membre Dernière intervention   -  
bigbik Messages postés 159 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un grand problème avec ma base de données. j'explique :
- quand je veux sortir les informations de la base par date, j'ai pas le bon résultat. Par exemple pour une recherche comprise entre le 02 et le 06 juin j'ai les résultats certes de cette période mais j'ai aussi les résultats du 02 au 06 mai qui s'affiche.

voici ma requête : select * from online where date between '02/06/2011' and '06/06/2011'

HELP ME PLEASE A TROUVER LA SOLUTION

A voir également:

17 réponses

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Tu dis que ton champ date est de type varchar ?? C'est une hérésie...
Ce n'est pas du tout étonnant comme comportement... car ton between fera des comparaisons sur l'ordre alphabétique !
Les dates, c'est du type datetime et rien d'autre !

Tu peux t'en sortir en faisant comme ça (testé et approuvé sous SQL Server 2005)
select * from online 
where convert(datetime, date, 103) between convert(datetime, '02/06/2011', 103) and convert(datetime, '06/06/2011', 103)


Xavier

(PS : le 103 dans les convert signifie que la date est du type jj/mm/aaaa)
2
Creutzou Messages postés 550 Date d'inscription   Statut Membre Dernière intervention   30
 
Salut,

Tu n'as cas faire un dateDebut + 1 et un dateFin - 1 ?
ou sinon tu prends les dates strictement supérieures à dateDebut, et strictement inférieur a dateFin ?

Ce n'est peut être pas la bonne solution, mais je ferrais comme ça moi ;)
Tout vient à point à qui sait attendre
~~ Cr3u7z0u ~~
0
Deathmann Messages postés 222 Date d'inscription   Statut Membre Dernière intervention   59
 
Bonjour,

SELECT *
FROM Online
WHERE date >= '02/06/2011' AND date <= '06/06/2011';

Essayes ça, mais cela dépend du format de ton champs 'date'.

Cordialement.
0
Creutzou Messages postés 550 Date d'inscription   Statut Membre Dernière intervention   30
 
Plop,

je ne vois pas trop de difference, car la avec le égale tu comprends également le 02/06 et le 06/06
0
Deathmann Messages postés 222 Date d'inscription   Statut Membre Dernière intervention   59
 
aah, c'est que tu as écris du 2 au 6 mai juste avant ta requête. le 06 c'est le mois de juin ^^

SELECT *
FROM Online
WHERE date > '02/06/2011' AND date < '06/06/2011';

Voilà, ça devrait être bon, Cordialement.
0
bigbik Messages postés 159 Date d'inscription   Statut Membre Dernière intervention   1
 
j'ai d'autres bases mais c'est la première fois que je rencontre ce problème.

le champ date est de type varchar.

Je vais tester et je reviens vers vous. merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bigbik Messages postés 159 Date d'inscription   Statut Membre Dernière intervention   1
 
Toujours le même problème. c'est un truc de "fou".

avez-vous d'autres solutions svp
0
Creutzou Messages postés 550 Date d'inscription   Statut Membre Dernière intervention   30
 
si tu veux faire des opérations sur les dates, sachant qu'elles sont en varchar, bon courage !
Je trouve un petit manque de logique.
0
Deathmann Messages postés 222 Date d'inscription   Statut Membre Dernière intervention   59
 
je réfléchis à une solution et je te renverrai la bonne requête si c'est en varchar
0
bigbik Messages postés 159 Date d'inscription   Statut Membre Dernière intervention   1
 
merci de votre aide
0
bigbik Messages postés 159 Date d'inscription   Statut Membre Dernière intervention   1
 
Creutzou pourrais-tu m'expliquer davantage. je te suis pas à 100%
0
Deathmann Messages postés 222 Date d'inscription   Statut Membre Dernière intervention   59
 
Enfaites, dans les bases de données, tu as plusieurs types de variable (texte, numérique, date, bolléen...) et tu as choisi de prendre du texte pour le faire alors qu'avec un format date, cela aurait été beaucoup plus simple.
0
Creutzou Messages postés 550 Date d'inscription   Statut Membre Dernière intervention   30
 
je voulais juste dire, que si tu as des opérations à faire sur les dates, il était plus simple de les mettre dans un champs date. Comme ça pour ta sélection, il est plus aisé de faire entre tel et tel période.
ps: tu es sous quelle système de base de donnée ?
0
bigbik Messages postés 159 Date d'inscription   Statut Membre Dernière intervention   1
 
et il est pas possible de convertir ?
0
bigbik Messages postés 159 Date d'inscription   Statut Membre Dernière intervention   1
 
je travaille avec sql 2000.
0
Deathmann Messages postés 222 Date d'inscription   Statut Membre Dernière intervention   59
 
Je ne connais pas ce logiciel désolé
0
Deathmann Messages postés 222 Date d'inscription   Statut Membre Dernière intervention   59
 
Cette requête marcherai mais elle n'est pas optimisée du tout, mais sinon pour travailler sur du varchar, il faudrait des conditions like, avec des REquêtes imbriquées, le 'Dawa' quoi ^^

-->

Select *
From Online
Where date = '03/06/2011'
Or date = '04/06/2011'
Or date = '05/06/2011'
Order by date ASC;


0
bigbik Messages postés 159 Date d'inscription   Statut Membre Dernière intervention   1
 
j'ai déjà pensé à cette solution mais le problème est que j'ai une application qui tourne et qui est censé exécuté la requête sql. du coup l'utilisation de la requête ci-dessous rend la chose plus compliquer je pense.

Select *
From Online
Where date = '03/06/2011'
Or date = '04/06/2011'
Or date = '05/06/2011'
Order by date ASC;
0
Deathmann Messages postés 222 Date d'inscription   Statut Membre Dernière intervention   59
 
Comment ça ?
0
bigbik Messages postés 159 Date d'inscription   Statut Membre Dernière intervention   1
 
en fait j'ai une page html avec deux zone de saisie. raison pour laquelle la requête avec between est intéressant parce que quand la personne saisie les dates alors et clic sur rechercher automatique la recherhe se lance.

Par contre ça devient impossible de traiter la demande si la requête est de la forme ci-dessous
0
Deathmann Messages postés 222 Date d'inscription   Statut Membre Dernière intervention   59
 
Ce sont des dates saisies ? je n'avais pas compris ça comme ça, il faut donc bien que tu convertisses tes dates au format date.
0
bigbik Messages postés 159 Date d'inscription   Statut Membre Dernière intervention   1
 
je sais pas comment faire.
0
bigbik Messages postés 159 Date d'inscription   Statut Membre Dernière intervention   1
 
BIG MERCI A TOUS CA MARCHE NICKEL

ENCORE MEEERRRRCCCCCCCCCCCCCIIIIIIIIIIIIIIII
0
bigbik Messages postés 159 Date d'inscription   Statut Membre Dernière intervention   1
 
Par contre avant d'oublier je souhaiterai changer le type du champ pour ne plus me prendre la tête. comment faire ?
0