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