Bạn nói đúng - SQL không giúp bạn dễ dàng xác định dữ liệu bị thiếu. Kỹ thuật thông thường là nối chuỗi của bạn (có khoảng trống) với một chuỗi hoàn chỉnh và chọn các phần tử đó trong chuỗi thứ hai mà không có đối tác tương ứng trong dữ liệu của bạn.
Vì vậy, đề xuất của @ BenHoffstein duy trì một bảng ngày vĩnh viễn là một điều tốt.
Ngoài ra, bạn có thể tạo động phạm vi ngày đó với bảng số nguyên
. Giả sử integers
bảng có một cột i
với các số ít nhất là 0 - 13 và bảng của bạn có cột ngày có tên là datestamp
:
SELECT candidate_date AS missing
FROM (SELECT CURRENT_DATE + INTERVAL i DAY AS candidate_date
FROM integers
WHERE i < 14) AS next_two_weeks
LEFT JOIN my_table ON candidate_date = datestamp
WHERE datestamp is NULL;