Bonjour !
J'aimerai effectuer une requête qui me permettrai de retrouver le numéro du week à partir d'une date donnée.
Pouvez-vous m'aider sur ce point?
Merci d'avance
Bonjour !
J'aimerai effectuer une requête qui me permettrai de retrouver le numéro du week à partir d'une date donnée.
Pouvez-vous m'aider sur ce point?
Merci d'avance
Quelque chose comme ca ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part select datepart(ww,getdate())
lol çà marche
Merci beaucoup,
ATTENTION : cette fonction est fausse, car elle numérote les semaines par rapport aux usage américains qui sont différents des notres.
Notre numérotation est basée sur le norme ISO et ce n'est pas la même chose !
Si vous voulez faire cela, utilisez la fonction suivante :
A +
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 CREATE FUNCTION dbo.F_NUMERO_SEMAINE_ISO (@JOUR datetime) RETURNS int AS BEGIN DECLARE @NSI int; SET @NSI = DATEPART(wk, @JOUR) + 1 - DATEPART(wk, CAST(DATEPART(yy, @JOUR) as CHAR(4)) + '0104'); -- cas particuliers : du 1 au 3 janvier, le jour peut appartenir à la dernière semaine de l'année précédente IF @NSI = 0 SET @NSI = dbo.dbo.F_NUMERO_SEMAINE_ISO(CAST(DATEPART(yy,@JOUR)-1 AS CHAR(4)) + '12' + CAST(24 + DATEPART(DAY, @JOUR) AS CHAR(2))) + 1; -- cas particuliers : du 29 au 31 décembre, le jour peut appartenir à la première semaine de l'année suivante IF (DATEPART(mm, @JOUR) = 12) AND ( (DATEPART(dd, @JOUR) - DATEPART(dw, @JOUR) ) >= 28 ) SET @NSI = 1; RETURN @NSI; END
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Bonjour SQLpro,
Je dois travailler avec le numéro de semaine, et j'ai donc repris la fonction ci-dessus, mais...
je suis un peu intrigué.
m'indique qu'on est en semaine 11
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT datepart(ww,getdate())
et la fonction ci-dessus m'indique qu'on est en semaine 10
Or d'après mon agenda, on est dans la 11eme semaine.
N'y a-t-il pas une erreur quelque part ?
Bonjour,
Cette année la première semaine compte bien 4 jours (jeudi au dimanche) si vous êtes en usage FR Plus de détail sur la numérotation des semaines:
http://fr.wikipedia.org/wiki/Num%C3%...O_des_semaines
Quel est votre langue d'installation pour SQL Serverur (Français ou Angalis)
et quel est le premier jour de la semaine (normalement en France c'est Lundi (1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select @@datefirst
Donc cela signifie que le premier jour de la semaine est pour vous le dimanche
POur positionner le lundi:
SET DATEFIRST 1
Bonjour,
Il doit y avoir une raison pour que le DATEFIRST vale 7 sur votre instance SQL Server.
Quel est le langage de celle-ci ?
@++
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT @@LANGUAGE![]()
us_english
Donc en fait si je comprends bien : le résultat est le bon mais c'est un hasard. Si je mets le datefirst à 1 ca sera faux avec le select datepart(ww,getdate()), mais exact avec la fonction de SQLpro.
C'est bien ca ?
Mais est-ce cohérent de mettre le datefirst à 1 si le language est "us_english" ?
J'ai un peu peur des régression : /
Du coup la solution serait peut-être de modifier le datefirst avant (1) et après (7) l'appel de la fonction de SQLpro...
Merci pour vos réponses en tout cas !
Personnellement je ne trouve pas cela propre.Mais est-ce cohérent de mettre le datefirst à 1 si le language est "us_english" ?
C'est un cas particulier, mais si un jour vous devez internationaliser votre application, vous allez être dans la panade ...
Il arrive aussi que certaines entreprises considèrent leur exercice ou leurs débuts de semaine le mercredi ...
La fonction que vous a fourni SQLPro vous permet de retrouver le n° de semaine quel que soit la valeur affetée à DATEFIRSTDu coup la solution serait peut-être de modifier le datefirst avant (1) et après (7) l'appel de la fonction de SQLpro...
@++![]()
Parce que la méthode de calcul de la fonction de SQLPro utilise la norme ISO pour calculer le n° de semaine.
Mais vous êtes d'accord que celui-ci dépend de la valeur attribuée au paramètre DATEFIRST ?
@++![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager