tôi đã thiết lập sau ngày (dd/MM/yyyy) phù hợp với các sự kiện trong cơ sở dữ liệu của tôi:Tính phạm vi ngày mất tích và phạm vi ngày chồng chéo giữa hai ngày
eventId startDate endDate 1 02/05/2009 10/05/2009 2 08/05/2009 12/05/2009 3 10/05/2009 12/05/2009 4 21/05/2009 21/05/2009 5 25/05/2009 NULL 6 01/06/2009 03/06/2009
Các sự kiện có một khởi đầu và ngày kết thúc (thời gian không quan trọng) và một endDate NULL có nghĩa là sự kiện vẫn đang được tiến hành.
Điều tôi muốn xác định là phạm vi ngày giữa hai ngày tùy ý trong đó có a) không có sự kiện và b) sự kiện trùng lặp.
Vì vậy, đối với một phạm vi ngày đầu vào của 01/04/2009 - 30/06/2009 tôi mong chờ để có kết quả như sau:
no event: 01/04/2009 - 01/05/2009 overlap : 08/05/2009 - 10/05/2009 overlap : 10/05/2009 - 12/05/2009 no event: 13/05/2009 - 20/05/2009 no event: 22/05/2009 - 24/05/2009 overlap : 01/06/2009 - 03/06/2009
Lưu ý rằng hai dãy chồng chéo liền kề sẽ được chấp nhận như là một kết quả.
Mọi người có thể giúp tôi với thuật toán SQL để tạo tập hợp kết quả này không?
EDIT: Cơ sở dữ liệu nền tảng mục tiêu là SQL Server 2005. Ngày được ghi là 10/05/2009 00:00:00, có nghĩa là sự kiện đã kết thúc vào khoảng thời gian từ ngày 10/5/2009 00:00:00 và 10/5/2009 23:59:59. Điều này cũng đúng cho những ngày bắt đầu. Do đó, phạm vi ngày đầu vào cũng có thể được đọc là 01/04/2009 00:00:00 - 30/06/2009 23:59:59.
On mà nền tảng cơ sở dữ liệu (s), bạn sẽ được chạy truy vấn này? –