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

Oblicz wszystkie niedziele, poniedziałki... soboty między dwoma dniami w SQL Server

Myślę, że Twoje zapytanie dostarcza poprawny wynik, ale można je nieco uprościć.

Zależy to jednak od USTAW PIERWSZĄ DATĘ ustawienie.

datepart(dw,[Date]) = 1 policzy liczbę poniedziałków, jeśli SET DATEFIRST to 1.

Spróbuj tego:

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

Wynik:

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

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

Aktualizacja: Kolejne zapytanie, które robi to samo.

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. Jak zaktualizować tabelę na podstawie parametru XML?

  2. Serwer Adaptive Server jest niedostępny lub nie występuje błąd podczas łączenia się z serwerem SQL z PHP

  3. Co to jest impas w bazie danych?

  4. SQL Server zablokował dostęp do procedury „sys.sp_OACreate” składnika „Ole Automation Procedures”

  5. Włącz wyszukiwanie pełnotekstowe w widoku z połączeniem wewnętrznym