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

Uzyskaj liczbę weekendów między dwiema datami w SQL

Wypróbowałem tę logikę z kilkoma skrajnymi przypadkami i wydaje się, że działa.

SELECT DATEDIFF(d, @dFrom, @dTo)/7+1
    + CASE WHEN DATEPART(dw,@dFrom) IN (1,7) THEN -1 ELSE 0 END
    + CASE WHEN DATEPART(dw,@dTo) IN (1,7) THEN -1 ELSE 0 END

Możesz zmienić instrukcje CASE w zależności od tego, jak chcesz obsługiwać przypadki, w których data początkowa lub końcowa przypada na weekend. W moim przypadku nie uwzględniam weekendu, jeśli datą rozpoczęcia lub zakończenia jest sobota lub niedziela.



  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 agregować wartości z obrotu?

  2. Agregat nie może pojawić się na liście zestawów instrukcji UPDATE. Jeśli zaktualizujesz nazwy kolumn

  3. Uzyskaj ostatnie 30-dniowe rekordy z dzisiejszej daty w SQL Server

  4. Zastępowanie NULL z wyników zapytania CASE

  5. jak mogę uzyskać ułamek dziesiętny w sql