从表中选择继续日期

时间:2014-06-20 12:21:28

标签: php mysql

这让我很困惑如何连续地从表格中选择日期。 假设我有absent_report表并且有这样的条目,

Sno Code    date
1   101 01-01-2014
2   101 02-01-2014
3   101 03-01-2014

4   101 05-01-2014
5   101 06-01-2014
6   101 07-01-2014

我只想从日期中选择继续日期。比如前三个日期不是第四个等等。 示例就像我有一个日期,我必须比较是像31-12-2013现在从这里下一个继续日期,如01-01-2014,02-01-2014,03-01-2014只,无论下一个记录像我在该表05-01-2014,06-01-2014,07-01-2014中有日期。我只想要第一次连续约会。希望这更清楚我想要的东西。

2 个答案:

答案 0 :(得分:1)

使用BETWEEN语法

SELECT * FROM table WHERE date BETWEEN '2014-01-01' AND '2014-01-03';

答案 1 :(得分:0)

您可以检查下一行是否有第二天,或前一行是否有前一天。为此,我使用this answer中所述的DATE_ADD()。但是,我不确定这是否比完全在PHP中实现逻辑更好。

SELECT sno, code, date FROM table AS current
WHERE
    DATE(DATE_ADD(date, INTERVAL -1 DAY)) = (SELECT date FROM table AS previous WHERE previous.date < current.date ORDER BY date DESC LIMIT 1)
OR
    DATE(DATE_ADD(date, INTERVAL +1 DAY)) = (SELECT date FROM table AS next WHERE next.date > current.date ORDER BY date ASC LIMIT 1)
ORDER BY date ASC

查看工作here