1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
select
/* le codage de @@datefirst est immuable et commence a 1 = Lundi */
/* jusqu'a 7 = Dimanche */
/* */
/* datepart("dw",une_date) donne un rang de 1 à 7 par rapport */
/* au jour vu dans @@datefirst */
/* */
/* on fait -1 pour obtenir un décalage et on readditionne */
/* la base @@datefirst quelle qu'elle soit : modulo 7 donnera */
/* toujours les memes restes quelque soit @@datefirst systeme */
/* (de 0 a 6, maintenant, avec 0 = Dimanche) */
case
when (@@datefirst + datepart("dw",getdate()) - 1 ) % 7 = 1 then 'Lundi'
when (@@datefirst + datepart("dw",getdate()) - 1 ) % 7 = 2 then 'Mardi'
when (@@datefirst + datepart("dw",getdate()) - 1 ) % 7 = 3 then 'Mercredi'
when (@@datefirst + datepart("dw",getdate()) - 1 ) % 7 = 4 then 'Jeudi'
when (@@datefirst + datepart("dw",getdate()) - 1 ) % 7 = 5 then 'Vendredi'
when (@@datefirst + datepart("dw",getdate()) - 1 ) % 7 = 6 then 'Samedi'
else 'Dimanche'
end
as nom_du_jour_courant,
/* pour circuler dans la semaine, j'utilise l'encodage de @@datefirst */
/* de 1 a 7 (qui, rappelons-le, est fixe) : */
dateadd("dd", -(( (@@datefirst + datepart("dw",getdate()) - 1 ) % 7) - 1), getdate()) as lundi_semaine_en_cours,
dateadd("dd", -(( (@@datefirst + datepart("dw",getdate()) - 1 ) % 7) - 2), getdate()) as mardi_semaine_en_cours,
/* etc... */
/* si je passe un lundi, lundi_semaine_en_cours = jour_de_passage, */
/* mardi_semaine_en_cours = demain, */
/* mercredi_semaine_en_cours = après-demain, */
/* etc... */
/* si je passe un mardi, lundi_semaine_en_cours = hier, */
/* mardi_semaine_en_cours = jour_de_passage */
/* mercredi_semaine_en_cours = demain, */
/* etc... */
/* etc... */
'jml77' as author |
Partager