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

Signaler
Messages postés
74
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
1 février 2012
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
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

Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
9
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
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
116
Salut,

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

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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)
Messages postés
74
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
1 février 2012

slt
Ma base de données est sous oracle 10g.
Mon problème n'est toujours pas résolu.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
"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.