我有关于获取数据库表中不存在的日期的查询。
我在数据库中有以下日期。
2013-08-02
2013-08-02
2013-08-02
2013-08-03
2013-08-05
2013-08-08
2013-08-08
2013-08-09
2013-08-10
2013-08-13
2013-08-13
2013-08-13
我想要如下预期的结果,
2013-08-01
2013-08-04
2013-08-06
2013-08-07
2013-08-11
2013-08-12
如您所见,结果有六个日期不存在于数据库中,
我试过下面的查询
SELECT
DISTINCT DATE(w1.start_date) + INTERVAL 1 DAY AS missing_date
FROM
working w1
LEFT JOIN
(SELECT DISTINCT start_date FROM working ) w2 ON DATE(w1.start_date) = DATE(w2.start_date) - INTERVAL 1 DAY
WHERE
w1.start_date BETWEEN '2013-08-01' AND '2013-08-13'
AND
w2.start_date IS NULL;
但以上返回以下结果。
2013-08-04
2013-08-14
2013-08-11
2013-08-06
正如您所看到的,它从不需要 14 个日期中返回四个日期,但由于左连接,它仍然不包含 3 个日期。
现在请查看我的查询,让我知道我能做到这一点的最佳方法是什么?
感谢您的关注和时间。