Bonjour
J'ai, du fait de la conception de la base sur laquelle je travaille (et je me demande quel peut être l'avantage de stocker des Dates sous un format CHAR):
-Des dates stockées au Format CHAR de la façon suivante: DDMMYYYY=>DATE1
-Des dates stockées au Format CHAR de la façon suivante: YYYYMMDD=>DATE2
Dans une requête, j'ai une colonne affichant une valeur NUMERIQUE (ENTIER) 'MAVALEUR'
Je voudrais comparer cette valeur à la différence EN NOMBRE DE SEMAINES TELLES QUE [DATE2-(DATE1-14 JOURS)]<=MAVALEUR
Je procède de la façon suivante pour la conversion (mais il y a peut-être mieux):
-Conversion de format CHAR DDMMYYY:
CONVERT(VARCHAR(15),CAST(STR(RIGHT(DATE1,4)+SUBSTRING(DATE1,3,2)+LEFT(DATE1,2),8,0)AS DATETIME),105)
J'obtiens une date au format DD-MM-YYYY
-Conversion de format CHAR YYYYMMDD:
CONVERT(VARCHAR(15),CAST(STR(DATE2,8,0)AS DATETIME),105)
J'obtiens une date au format DD-MM-YYYY
Pour ma requête j'essaye de faire -mais cela ne fonctionne pas:
1 2
| WHERE (...)
AND DATEDIFF(DAY,CONVERT(VARCHAR(15),CAST(STR(RIGHT(DATE1,4)+SUBSTRING(DATE1,3,2)+LEFT(DATE1,2),8,0)AS DATETIME),105)-14,CONVERT(VARCHAR(15),CAST(STR(DATE2,8,0)AS DATETIME),105)<>MAVALEUR |
Un petit coup de main?
Comme je ne m'explique sûrement pas bien, j'ai joint la véritable requête
PS: en fait -en fait je voudrais que mon DATEDIFF soit différent de MAVALEUR +/- 1 en SEMAINES, en sus du reste, je ne sais comment traduire le +/- 1
Merci d'avance
Partager