sql >> Databasteknik >  >> RDS >> Sqlserver

Hur får man månadens veckonummer från datumet i sql server 2008

Här är två olika sätt, båda antar att veckan börjar på måndag

Om du vill att veckor ska vara hela, så tillhör de månaden de börjar:Så lördag 2012-09-01 och söndag 2012-09-02 är vecka 4 och måndag 2012-09-03 är vecka 1 använd detta:

declare @date datetime = '2012-09-01'
select datepart(day, datediff(day, 0, @date)/7 * 7)/7 + 1

Om dina veckor minskar med månadsändring så lördag 2012-09-01 och söndag 2012-09-02 är vecka 1 och måndag 2012-09-03 är vecka 2 använd detta:

declare @date datetime = '2012-09-01'
select datediff(week, dateadd(week, 
  datediff(day,0,dateadd(month,
    datediff(month,0,@date),0))/7, 0),@date-1) + 1

Jag fick ett mejl från Gerald. Han påpekade ett fel i den andra metoden. Detta borde vara åtgärdat nu



  1. Använda PostgreSQL logisk replikering för att upprätthålla en alltid uppdaterad läs-/skriv-TEST-server

  2. Hur man väljer äldsta datum från MySQL

  3. Ta bort fråga som genererar UncategorizedSQLException och ORACLE-minnesproblem i SPRING-ramverket

  4. uppdatera html-sidan när en ny sql-post har matats in