sql >> Database teknologi >  >> RDS >> Sqlserver

Beregn alle søndage, mandage...lørdage mellem to dage i SQL Server

Jeg synes, din forespørgsel giver det korrekte resultat, men kunne forenkles en smule.

Det er dog afhængigt af SET DATEFIRST indstilling.

datepart(dw,[Date]) = 1 vil tælle antallet af mandage, hvis SET DATEFIRST er 1.

Prøv dette:

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

Resultat:

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

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

Opdatering: Endnu en forespørgsel, der gør det samme.

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. IsNumeric i SQL Server JOIN

  2. MySQL konverter mellem to datoformater

  3. Problemer med at logge ind på mysql som ikke-root

  4. Postgresql escape enkelt citat i where-klausul