Fonction de date SQL Server

J'ai besoin d'get le numéro de la semaine de la date de don. Pour Ex 1 jan = semaine n'est pas 1, 8 janvier – semaine 2 comme ça .. tout un m'aider à pls.

Vous devriez essayer quelque chose comme ceci:

DECLARE @Dt datetime SELECT @Dt='02-21-2008' SELECT DATEPART( wk, @Dt) 

Cela devrait returnner les numéros de semaine que vous voulez.

SQL Server commence à countr à partir du 1er janvier. Si vous voulez returnner les numéros de semaine ISO, vous devez faire un peu plus de scripts. Un joli howto est listé sur ce site: http://www.rmjcs.com/SQLServer/TSQLFunctions/ISOWeekNumber/tabid/207/Default.aspx

MSDN : DATEPART (Transact-SQL)

En réponse au commentaire de Robin:

Mais j'ai besoin d'une telle manière, que de Janvier 1 à 7, il devrait revenir 1, à partir de 8 jan 17, il devrait revenir 2 comme ça .. j'espère que vous avez eu mon printing

Dans ce cas, vous pourriez aussi écrire quelque chose comme ça.

 select (datepart(dy, '2011-01-01') / 7) + 1 --returns 1 select (datepart(dy, '2011-01-02') / 7) + 1 --returns 1 select (datepart(dy, '2011-12-31') / 7) + 1 --returns 53 

Je ne sais pas comment SQL Server 2008 répond avec le paramètre iso_week et wk car je n'ai qu'une instance SQL 2005 disponible pour le moment.

Est-ce que cela fait ce que vous voulez?

 declare @T table (dt datetime) insert into @T values ('2010-12-31'), ('2011-01-01'), ('2011-01-02'), ('2011-01-03'), ('2011-01-04'), ('2011-01-05'), ('2011-01-06'), ('2011-01-07'), ('2011-01-08') select dt, (datediff(d, dateadd(year, datediff(year, 0, dt), 0), dt) / 7)+1 from @T 

Résultat

 dt ----------------------- ----------- 2010-12-31 00:00:00.000 53 2011-01-01 00:00:00.000 1 2011-01-02 00:00:00.000 1 2011-01-03 00:00:00.000 1 2011-01-04 00:00:00.000 1 2011-01-05 00:00:00.000 1 2011-01-06 00:00:00.000 1 2011-01-07 00:00:00.000 1 2011-01-08 00:00:00.000 2