Problème avec concatenation du moi et de l'année

ndaseraphin Messages postés 74 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 1 février 2012 - 3 mai 2010 à 14:11
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 4 mai 2010 à 01:05
slt à tous,
j'ai fais une concaténation du mois et de l'année de ma table PAIEMENT, mais le résultat sorti n'est pas juste.:
voici mon code:

[b]select * from PAIEMENT where
concat(concat(MOIS,'/'),ANNEE)>='1/2000' and
concat(concat(MOIS,'/'),ANNEE)<='4/2000'/b

Le resultat me sort des mois tels que 4,2,10,12,........... et des années telles que 2009,2004,2006,....

s'il vous plaît aider moi, je suis vraiment coincé.

merci d'avance

5 réponses

Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
3 mai 2010 à 14:27
Bonjour,

Quelle version de SQL ? Dans SQL 2010, CONCAT() à l'air inconnu...

Essaie avec l'opérateur + et en castant tous les champs qui ne seraientt pas caracères en CHAR ou VARCHAR.


Calade
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
3 mai 2010 à 14:33
Salut,

Surement parce que "1/" < "10", donc que "/" < "0"...

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 mai 2010 à 17:18
Salut
Concat : connait pô
Même question : Quelle base de données ?
Mais aussi : Quel moteur de connexion ? DAO ? ADO ?

Mais comme le dit Dark, comparer des chaines de caractères n'est jamais la solution puisque la comparaison se fera sur les lettres qui la compose : "200" sera toujours inférieur à "88" (parce 2 est avant 8 dans la table ASCII)

Tu pourrais passer par les vrais types de variable : Date.
Vois comment transformer la chaine issue de tes "Concat" en date dans l'aide de ton SQL.
Mais le format MM/YYYY risque de poser des problèmes.
Je pense qu'il faudra que tu y ajoutes au moins un numéro de jour "01" à chaque date pour être viable.

De plus, il faudra encadrer la date de comparaison, 1/2000 ou 4/2000, par des # et pas des '.
Voir aussi la fonction SQL "Between"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
ndaseraphin Messages postés 74 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 1 février 2012
3 mai 2010 à 17:32
slt
Ma base de données est sous oracle 10g.
Mon problème n'est toujours pas résolu.
0

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

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
4 mai 2010 à 01:05
"Mon problème n'est toujours pas résolu"
Et qu'as-tu essayé avec les indications qu'on t'a données ?

Voir instructions SQL "Convert" et "Between", mais on ne fera pas le programme a ta place pour la bonne et simple raison, c'est qu'on n'a pas la connexion Oracle à notre disposition.
0
Rejoignez-nous