Numéro de semaine – Norme ISO

Il y a plusieurs façons de calculer le N° de semaine. J’y ai déjà été confronté il y a quelques années.

Il y a une norme ISO qui est notamment utilisée par les calendriers papier (http://fr.wikipedia.org/wiki/Numérotation_ISO_des_semaines).

On peut avoir ce comportement dans Outlook ; il faut le configurer ici :

Calendar Properties
clip_image002

Le problème se pose quand on doit l’utiliser dans du code. J’ai notamment eu le cas dans un rapport Reporting Services.

J’utilise l’expression suivante :

DatePart(“ww”, Fields!MaDate.Value)

Or, cette instruction ne se base pas sur la norme ISO mais démarre au 1er janvier.

En T-SQL, on peut avoir le bon calcul en changeant la constante :

SELECT DATEPART(ISOWK, '2010-01-04')

Mais cette constante n’existe pas dans le moteur d’expression de Reporting Services…

Donc il vous faudra vous baser sur un bout de code embarqué.

Et hop, une remontée de plus sur Connect.

UPDATE  :

La fonction DatePart() a une surcharge qui prend 4 paramètres dont le dernier sert à définir la première semaine de l’année et donc avoir un comptage qui respecte la norme ISO 8601.

=Datepart(DateInterval.WeekOfYear, Fields!Date.Value, FirstDayOfWeek.Monday, FirstWeekOfYear.FirstFourDays)

J’ai testé avec avec Report Builder 3.0 // SQL Server 2008 R2

2 réflexions sur “Numéro de semaine – Norme ISO

  1. Oui, c’est une solution, laisser SQL Server le calculer et l’avoir comme champ dans le DataSet.
    Mais bon, si tu es en MDX et que tu ne l’as pas dans ta dimension Temps.

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s