Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Nhận số ngày cuối tuần giữa hai ngày trong SQL

Tôi đã thử logic này với một số trường hợp cạnh và nó có vẻ hoạt động.

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

Bạn có thể thay đổi các câu lệnh CASE tùy thuộc vào cách bạn muốn xử lý các trường hợp trong đó ngày bắt đầu hoặc ngày kết thúc là một ngày cuối tuần. Trong trường hợp của tôi, tôi không bao gồm ngày cuối tuần nếu ngày bắt đầu hoặc ngày kết thúc là Thứ Bảy hoặc Chủ Nhật.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chèn kết quả XML FOR AUTO vào bảng?

  2. Bắt lỗi hoạt động nhiều bước được tạo ra. Kiểm tra từng giá trị trạng thái. lỗi khi sử dụng ADO với SQL server 2008

  3. SQL INSERT INTO từ nhiều bảng

  4. SQL Server chọn giá trị ngẫu nhiên (hoặc đầu tiên) với tổng hợp

  5. Không thể liên kết số nhận dạng nhiều phần - SubQuery