OVH Cloud OVH Cloud

Datepart

6 réponses
Avatar
Monait
Bonjour,

Lorsque je la requête suivante
select datepart(ww,'3/1/2005')
Le numéro de semaine retourné est la 2 alors que le résultat est normalement 1

Comment corriger ce problème pour avoir les bons numéros de semaines ?

Merci

6 réponses

Avatar
Gilles
Extrait du message de Med Bouchenafa bas
Première semaine de l'année 2005

Il suffit de paramétrer le DATEFIRST au premier jour de l'année
Dans le cas de 2005, cela donne
SET DATEFIRST 6
SELECT datepart(ww,'20050101') ====> 1
SELECT datepart(ww,'20050107') ====> 1

SELECT datepart(ww,'20050108') ====> 2

--
Bien cordialement
Med Bouchenafa

et enfin Gilles
Avatar
Boss Hog
Salut,
cela depend aussi de ton regional setting je crois car moi en setting US
pour avoir la premiere semaine je met ceci = (3 janvier 2005)
select datepart(ww,'1/3/2005') as DATEWW

si je met le meme code que toi il me retourne le 1 mars et non le 3 janvier.

@+
Boss Hog

"Monait" wrote in message
news:
Bonjour,

Lorsque je la requête suivante
select datepart(ww,'3/1/2005')
Le numéro de semaine retourné est la 2 alors que le résultat est


normalement 1

Comment corriger ce problème pour avoir les bons numéros de semaines ?

Merci


Avatar
Francis
Gilles wrote:
Extrait du message de Med Bouchenafa bas
Première semaine de l'année 2005

Il suffit de paramétrer le DATEFIRST au premier jour de l'année
Dans le cas de 2005, cela donne
SET DATEFIRST 6
SELECT datepart(ww,'20050101') ====> 1
SELECT datepart(ww,'20050107') ====> 1

SELECT datepart(ww,'20050108') ====> 2



Si vous voulez vous amuser, je suis également sur les problèmes de
numéro de semaine, et en faisant des tests j'obtiens un résultat très
bizarre :

set datefirst 5
select datepart(week,convert(datetime,'31/12/2004',103))
select datepart(week,convert(datetime,'01/01/2004',103))
select datepart(week,convert(datetime,'02/01/2004',103))
select datepart(week,convert(datetime,'03/01/2004',103))

me retourne :

54
1
2
2

Le problème (si c'est vraiment un problème) ne se produit qu'avec
datefirst=5. Avec 4 et 6, le numéro de semaine est bien 53.
Avatar
bruno reiter [MVP]
qu'est-ce qui est bizarre?

le 1/1/2004 est un jeudi, donc avec datefirst = 5 la semaine commence le
vendredi, le 2/1/2004 est le premier de la semaine 2 de 2004 et le
31/12/2004 qui est un vendredi est le premier et dernier jour de la semaine
54 de 2004

br

"Francis" wrote in message
news:#
Gilles wrote:
> Extrait du message de Med Bouchenafa bas
> Première semaine de l'année 2005
>
> Il suffit de paramétrer le DATEFIRST au premier jour de l'année
> Dans le cas de 2005, cela donne
> SET DATEFIRST 6
> SELECT datepart(ww,'20050101') ====> 1
> SELECT datepart(ww,'20050107') ====> 1
>
> SELECT datepart(ww,'20050108') ====> 2
>
Si vous voulez vous amuser, je suis également sur les problèmes de
numéro de semaine, et en faisant des tests j'obtiens un résultat très
bizarre :

set datefirst 5
select datepart(week,convert(datetime,'31/12/2004',103))
select datepart(week,convert(datetime,'01/01/2004',103))
select datepart(week,convert(datetime,'02/01/2004',103))
select datepart(week,convert(datetime,'03/01/2004',103))

me retourne :

54
1
2
2

Le problème (si c'est vraiment un problème) ne se produit qu'avec
datefirst=5. Avec 4 et 6, le numéro de semaine est bien 53.


Avatar
Yan
Bonjour,

Je peux vous proposer de la calculer vous-même, vu que SQL Server ne semble
pas s'appuyer sur la norme ISO :
http://www.developpez.net/forums/viewtopic.php?p69167&sid÷3891646b102344bdcdfc7501e0744e#1569167


Yan



"Francis" a écrit dans le message de
news:%
Gilles wrote:
> Extrait du message de Med Bouchenafa bas
> Première semaine de l'année 2005
>
> Il suffit de paramétrer le DATEFIRST au premier jour de l'année
> Dans le cas de 2005, cela donne
> SET DATEFIRST 6
> SELECT datepart(ww,'20050101') ====> 1
> SELECT datepart(ww,'20050107') ====> 1
>
> SELECT datepart(ww,'20050108') ====> 2
>
Si vous voulez vous amuser, je suis également sur les problèmes de
numéro de semaine, et en faisant des tests j'obtiens un résultat très
bizarre :

set datefirst 5
select datepart(week,convert(datetime,'31/12/2004',103))
select datepart(week,convert(datetime,'01/01/2004',103))
select datepart(week,convert(datetime,'02/01/2004',103))
select datepart(week,convert(datetime,'03/01/2004',103))

me retourne :

54
1
2
2

Le problème (si c'est vraiment un problème) ne se produit qu'avec
datefirst=5. Avec 4 et 6, le numéro de semaine est bien 53.


Avatar
Francis
Merci pour vos explications / solutions!

Yan wrote:
Bonjour,

Je peux vous proposer de la calculer vous-même, vu que SQL Server ne semble
pas s'appuyer sur la norme ISO :
http://www.developpez.net/forums/viewtopic.php?p69167&sid÷3891646b102344bdcdfc7501e0744e#1569167


Yan



"Francis" a écrit dans le message de
news:%

Gilles wrote:

Extrait du message de Med Bouchenafa bas
Première semaine de l'année 2005

Il suffit de paramétrer le DATEFIRST au premier jour de l'année
Dans le cas de 2005, cela donne
SET DATEFIRST 6
SELECT datepart(ww,'20050101') ====> 1
SELECT datepart(ww,'20050107') ====> 1

SELECT datepart(ww,'20050108') ====> 2




Si vous voulez vous amuser, je suis également sur les problèmes de
numéro de semaine, et en faisant des tests j'obtiens un résultat très
bizarre :

set datefirst 5
select datepart(week,convert(datetime,'31/12/2004',103))
select datepart(week,convert(datetime,'01/01/2004',103))
select datepart(week,convert(datetime,'02/01/2004',103))
select datepart(week,convert(datetime,'03/01/2004',103))

me retourne :

54
1
2
2

Le problème (si c'est vraiment un problème) ne se produit qu'avec
datefirst=5. Avec 4 et 6, le numéro de semaine est bien 53.