Pour mon projet, j'ai besoin d'une correspondance numérique absolue entre les jours de la semaine et 1 ... 7 valeurs.
Comme vous le savez probablement, l’association entre les jours et les nombres peut varier en fonction des paramètres régionaux, par exemple en Allemagne, le lundi est à 1 heure et le dimanche à 7 heures, aux États-Unis le lundi à 2 heures et le dimanche à 1 heure.
Alors, cherchant une solution, j’ai trouvé le code suivant qui semble fonctionner quelle que soit la langue, attribuant Monday = 1 ... Sunday = 7:
1 + TRUNC (date) - TRUNC (date, 'IW')
Quelqu'un peut-il m'expliquer comment ça marche? En particulier, je ne comprends tout simplement pas ce que cette instruction:
TRUNC (date, 'IW')
fait exactement.
Comme d'habitude, il s'agit de dans la documentation , en particulier:
IW Même jour de la semaine que le premier jour de la semaine ISO, c'est-à-dire lundi
TRUNC(DATE,'IW')
renvoie le premier jour de la semaine. Pour moi, TRUNC(SYSDATE,'IW)
renvoie lundi. Nous sommes le mardi 21 février. Soustrayez de TRUNC(SYSDATE,'IW')
qui serait le lundi 20 et vous obtiendrez 1
(car 21-20=1
). Ajoutez 1
à cela comme vous le faites au début de votre équation et vous obtenez 2
, que nous associons à mardi.
Le concept de base deISOweek consiste à le rendre territoire indépendant NLS .
De documentation ,
Semaine de l'année (1-52 ou 1-53) basée sur la norme ISO.
Une semaine commence le lundi et se termine le dimanche .