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

Вземете броя на уикендите между две дати в SQL

Изпробвах тази логика с няколко крайни случая и изглежда работи.

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

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Команда за заспиване в T-SQL?

  2. SQL разрешения за добавяне на данни и как да се провери?

  3. Подходящи индекси за сортиране във функциите за класиране

  4. Как да изтриете файлове в SQL Server 2019

  5. Използвайте стойността по подразбиране на колона в съхранени процедури