pas expert !!!
Quand on écrit
select datepart(ww,'01/01/2005')
SQL renvoie la réponse 1
alors que tous les calendriers nous disent que la semaine 1 commence le
lundi 3.
Le principe est (je crois) que pour être valide cette première semaine doit
comportée un jour ouvré non férié (voir 1999 commence par vendredi, la
semaine 1 commence le 4 janvier)
Pouvez m'indiquer si il existe un paramètre à rajouter à datepart ou une
autre fonction
ou un script qui analyse le 1er janvier de chaque année pour définir ensuite
une instruction conditionnelle.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD
vieux problème !!!!
Semaine US. Pour la semaine ISO utiliser la fonction :
Fonction utilisateur scalaire calculant la semaine ISO Dans cet exemple, une fonction utilisateur, ISOweek, contient un argument date et calcule le numéro de semaine ISO. Pour que ce calcul puisse être correctement réalisé, SET DATEFIRST 1 doit être appelé avant la fonction.
CREATE FUNCTION ISOweek (@DATE datetime) RETURNS int AS BEGIN DECLARE @ISOweek int SET @ISOweek= DATEPART(wk,@DATE)+1 -DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR(4))+'0104') --Special cases: Jan 1-3 may belong to the previous year IF (@ISOweek=0) SET @ISOweekÛo.ISOweek(CAST(DATEPART(yy,@DATE)-1 AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2)))+1 --Special case: Dec 29-31 may belong to the next year IF ((DATEPART(mm,@DATE)) AND ((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28)) SET @ISOweek=1 RETURN(@ISOweek) END
Voici l'appel de la fonction. Notez que DATEFIRST a pour valeur 1.
SET DATEFIRST 1 SELECT master.dbo.ISOweek('12/26/1999') AS 'ISO Week'
Extraite de l'aide en ligne de MS SQL Server.
A +
Albert LAHMI a écrit:
pas expert !!! Quand on écrit select datepart(ww,'01/01/2005') SQL renvoie la réponse 1 alors que tous les calendriers nous disent que la semaine 1 commence le lundi 3. Le principe est (je crois) que pour être valide cette première semaine doit comportée un jour ouvré non férié (voir 1999 commence par vendredi, la semaine 1 commence le 4 janvier) Pouvez m'indiquer si il existe un paramètre à rajouter à datepart ou une autre fonction ou un script qui analyse le 1er janvier de chaque année pour définir ensuite une instruction conditionnelle.
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
vieux problème !!!!
Semaine US. Pour la semaine ISO utiliser la fonction :
Fonction utilisateur scalaire calculant la semaine ISO
Dans cet exemple, une fonction utilisateur, ISOweek, contient un argument date
et calcule le numéro de semaine ISO. Pour que ce calcul puisse être correctement
réalisé, SET DATEFIRST 1 doit être appelé avant la fonction.
CREATE FUNCTION ISOweek (@DATE datetime)
RETURNS int
AS
BEGIN
DECLARE @ISOweek int
SET @ISOweek= DATEPART(wk,@DATE)+1
-DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR(4))+'0104')
--Special cases: Jan 1-3 may belong to the previous year
IF (@ISOweek=0)
SET @ISOweekÛo.ISOweek(CAST(DATEPART(yy,@DATE)-1
AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2)))+1
--Special case: Dec 29-31 may belong to the next year
IF ((DATEPART(mm,@DATE)) AND
((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28))
SET @ISOweek=1
RETURN(@ISOweek)
END
Voici l'appel de la fonction. Notez que DATEFIRST a pour valeur 1.
SET DATEFIRST 1
SELECT master.dbo.ISOweek('12/26/1999') AS 'ISO Week'
Extraite de l'aide en ligne de MS SQL Server.
A +
Albert LAHMI a écrit:
pas expert !!!
Quand on écrit
select datepart(ww,'01/01/2005')
SQL renvoie la réponse 1
alors que tous les calendriers nous disent que la semaine 1 commence le
lundi 3.
Le principe est (je crois) que pour être valide cette première semaine doit
comportée un jour ouvré non férié (voir 1999 commence par vendredi, la
semaine 1 commence le 4 janvier)
Pouvez m'indiquer si il existe un paramètre à rajouter à datepart ou une
autre fonction
ou un script qui analyse le 1er janvier de chaque année pour définir ensuite
une instruction conditionnelle.
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Semaine US. Pour la semaine ISO utiliser la fonction :
Fonction utilisateur scalaire calculant la semaine ISO Dans cet exemple, une fonction utilisateur, ISOweek, contient un argument date et calcule le numéro de semaine ISO. Pour que ce calcul puisse être correctement réalisé, SET DATEFIRST 1 doit être appelé avant la fonction.
CREATE FUNCTION ISOweek (@DATE datetime) RETURNS int AS BEGIN DECLARE @ISOweek int SET @ISOweek= DATEPART(wk,@DATE)+1 -DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR(4))+'0104') --Special cases: Jan 1-3 may belong to the previous year IF (@ISOweek=0) SET @ISOweekÛo.ISOweek(CAST(DATEPART(yy,@DATE)-1 AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2)))+1 --Special case: Dec 29-31 may belong to the next year IF ((DATEPART(mm,@DATE)) AND ((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28)) SET @ISOweek=1 RETURN(@ISOweek) END
Voici l'appel de la fonction. Notez que DATEFIRST a pour valeur 1.
SET DATEFIRST 1 SELECT master.dbo.ISOweek('12/26/1999') AS 'ISO Week'
Extraite de l'aide en ligne de MS SQL Server.
A +
Albert LAHMI a écrit:
pas expert !!! Quand on écrit select datepart(ww,'01/01/2005') SQL renvoie la réponse 1 alors que tous les calendriers nous disent que la semaine 1 commence le lundi 3. Le principe est (je crois) que pour être valide cette première semaine doit comportée un jour ouvré non férié (voir 1999 commence par vendredi, la semaine 1 commence le 4 janvier) Pouvez m'indiquer si il existe un paramètre à rajouter à datepart ou une autre fonction ou un script qui analyse le 1er janvier de chaque année pour définir ensuite une instruction conditionnelle.
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************