Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

как да получите началната и крайната дата на всички седмици между две дати в SQL сървър?

Можете да използвате рекурсивен CTE, за да генерирате списък с дати:

;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

Вижте SQL Fiddle с демонстрация.

След това можете да присъедините това към вашата таблица, за да върнете допълнителните подробности.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL сървър (MSSQL DBA) Уроци за база данни за начинаещи администратори на бази данни

  2. PIVOT заявка към различни записи

  3. Възможно ли е да се използва `SqlDbType.Structured` за предаване на параметри с таблица с стойност в NHibernate?

  4. Използвайте COL_LENGTH(), за да получите дължината на колона в SQL Server

  5. Добавяне на акаунт в база данни за поща към профил (T-SQL)