Select > Case > When CHAR_LENGTH
Bonjour à vous,
Dans ma base j'ai un champs "date_in" pour les visites d'entreprises. Voici comment cela se présente :
{date_1ère_visite}|{nb_visites}|{SI > 1 visite ALORS date_dernière_visite}
1 visite = 20131207|1
2 visites = 20131207|2|20140124
...
N visites = 20131207|N|20140205
Je souhaite faire une requête qui puisse extraire toutes les entreprises de type "client" que je n'ai pas visité depuis plus de 6 mois
C'est là que cela se complique... je souhaite donc tester quand {date_actuelle} - {date_dernière_visite} >= 180 sachant que {date_dernière_visite} peut aussi être la 1ère (si 1 seule) donc à droite ou à gauche du champs date_in
J'essaye déjà de mettre dans une colonne les dates en gras de ci-dessus.
La requête ci-dessous me renvoie "date_in" dans le champs date_dernière_visite créé pour l'occasion (donc qqch cloche) :
Code:
1 2 3 4 5 6 7
| SELECT CASE
WHEN (CHAR_LENGTH( 'date_in' ) >12) THEN RIGHT( 'date_in', 8 )
ELSE LEFT( 'date_in', 8 )
END "date_dernière_visite"
FROM entreprises
WHERE commercial = 'moi'
AND type = 'Client' |
Alors que je souhaite avoir :
date_dernière_visite
20131207
20140124
20140205
...
Bien-sûr dans la finalité de faire le test :
{date_actuelle} - {date_dernière_visite} >= 180
Suis dans les choux ou pas loin ? Merci de ne pas m'envoyer de scud dans la tronche, je suis un développeur "amateur"
Surtout merci d'avance pour votre aide
Guillaume
NB : oui je sais, j'aurais dû créer plusieurs champs distincts dans ma base, cela aurait facilité les choses...