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

Изчислете всички недели, понеделници... съботи между два дни в SQL Server

Мисля, че вашата заявка дава правилния резултат, но може да бъде малко опростена.

Въпреки това зависи от SET DATEFIRST настройка.

datepart(dw,[Date]) = 1 ще отчита броя на понеделниците, ако SET DATEFIRST е 1.

Опитайте това:

set datefirst 7 -- Sunday
select datepart(dw, '20111227')
set datefirst 1 -- Monday
select datepart(dw, '20111227')

Резултат:

-----------
3

-----------
2

Актуализация: Друга заявка, която прави същото.

select count(*) as Daycount
from master..spt_values as Number
where Number.type = 'P' and
      dateadd(day, Number.number, @StartDate) <= @EndDate and
      datepart(dw, dateadd(day, Number.number, @StartDate)) = 1


  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 сървър 2008:изберете подниз от поле

  2. Няма достатъчно системна памет във „вътрешния“ набор от ресурси

  3. Как да създадете композитен първичен ключ в SQL Server (пример за T-SQL)

  4. Как мога да върна множество редове като един ред в T-SQL?

  5. Каква е възможността на MS SQL Server, подобна на функцията MySQL FIELD()?