sql >> Databáze >  >> RDS >> Sqlserver

Spočítejte všechny neděle, pondělí...soboty mezi dvěma dny na serveru SQL

Myslím, že váš dotaz poskytuje správný výsledek, ale mohl by být trochu zjednodušen.

Závisí však na SET DATEFIRST nastavení.

datepart(dw,[Date]) = 1 bude počítat počet pondělí, pokud SET DATEFIRST je 1.

Zkuste toto:

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

Výsledek:

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

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

Aktualizace: Další dotaz, který dělá totéž.

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. Použijte tnsnames.ora v Oracle SQL Developer

  2. Spočítejte a zobrazte, kolik konkrétních sloupců je výsledkem

  3. Jak mohu udělat méně než, více než v polích JSON Postgres?

  4. PostgreSql INSERT FROM SELECT VRACOVACÍ ID