Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak uzyskać numer tygodnia miesiąca od daty w serwerze sql 2008

Oto 2 różne sposoby, oba zakładają, że tydzień zaczyna się w poniedziałek

Jeśli chcesz, aby tygodnie były całe, aby należały do ​​miesiąca, w którym się zaczynają:Więc sobota 2012-09-01 i niedziela 2012-09-02 to tydzień 4, a poniedziałek 2012-09-03 to tydzień 1, użyj tego:

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

Jeśli Twoje tygodnie ograniczają zmianę miesiąca, więc sobota 2012-09-01 i niedziela 2012-09-02 to tydzień 1, a poniedziałek 2012-09-03 to tydzień 2, użyj tego:

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

Otrzymałem e-mail od Geralda. Zwrócił uwagę na wadę drugiej metody. Powinno to zostać teraz naprawione



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj bieżący identyfikator logowania w SQL Server (T-SQL)

  2. Skanowanie wstecz indeksu SQL Server:zrozumienie i dostrajanie wydajności

  3. Szybka pomoc przy użyciu RANK nad wieloma zmiennymi

  4. Łączenie aplikacji działających w systemie Linux z usługami relacyjnej bazy danych Amazon (RDS) dla SQL Server

  5. Unikaj kolumn NULL, używając DEFAULT Empty String