Bon, je vais commencer par enfoncer une porte ouverte mais stocker les dates dans un varchar, c'est vraiment moins bien adapter qu'un type comme datetime...
Si vous pouvez changer ça, faites le vite. Sinon, ben, vous êtes pris avec un système de ****, bref bon courage.
SUBSTRING(CO.dat_commande,0,7)
=> remplacer par
SUBSTRING(CO.dat_commande,1,6)
, ça aura plus de sens.
Sinon pour tromper l'ennemi, pourquoi pas
SUBSTRING(CO.dat_commande,-12, 19)
;-)
Attention au conversion implicite :
SUBSTRING(CO.dat_commande,0,7) = 201001
D'un côté, un entier, de l'autre un varchar, c'est pas bon pour les perfs.
Pour votre problème, faites un croisement avec une table de mois (qui contient tous les mois) et d'années (qui contient les années pertinentes - 1789 n'est vraisemblablement pas une année qui doit vous être utiles tous les jours...)
Et convertissez ces dates en datetime avec une colonne calculée ou modifiez votre modèle, vous vous arracherez moins les cheveux avec les fonctionnalités de manipulation de date déjà implémentées...
Partager