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

jak uzyskać daty rozpoczęcia i zakończenia wszystkich tygodni między dwiema datami w serwerze SQL?

Możesz użyć rekurencyjnego CTE do wygenerowania listy dat:

;with cte as
(
  select @sDate StartDate, 
    DATEADD(wk, DATEDIFF(wk, 0, @sDate), 6) EndDate
  union all
  select dateadd(ww, 1, StartDate),
    dateadd(ww, 1, EndDate)
  from cte
  where dateadd(ww, 1, StartDate)<=  @eDate
)
select *
from cte

Zobacz SQL Fiddle z demonstracją.

Następnie możesz dołączyć to do swojego stołu, aby zwrócić dodatkowe szczegóły.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wykonać procedurę składowaną raz dla każdego wiersza zwróconego przez zapytanie?

  2. Konfigurowanie zależności maven dla SQL Server

  3. Konwertuj „czas” na „smalldatetime” w SQL Server (przykłady T-SQL)

  4. Wprowadzenie do wbudowanych funkcji z wartościami tabelarycznymi (ITVF) w SQL Server

  5. Jak zwrócić tylko wartości liczbowe w SQL Server