【问题标题】:Select continues dates from table从表中选择继续日期
【发布时间】:2014-08-11 04:56:20
【问题描述】:

这让我有点困惑如何从表中连续选择日期。 假设我有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。我只想要第一次连续约会。希望这更清楚我想要什么。

【问题讨论】:

  • @Fred-ii- 我知道他是这么说的(有点),但我不认为他是这么说的,我认为不是。
  • @RiggsFolly 我们会看看 OP 怎么说。这个问题有点含糊。
  • @Fred-ii- 这不是很有趣!
  • 你能更具体地回答你的问题吗?假设你的表中有4, 100, 09-01-2014 cortege,你想要的结果是什么?
  • 将所有这些额外信息放入您的原始问题中,而不是作为 cmets

标签: php mysql


【解决方案1】:

您可以检查下一行是第二天还是上一行是前一天。为此,我使用了DATE_ADD(),如this answer 中所述。但是,我不确定这是否比一起在 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

【讨论】:

  • 已解决。谢谢大家的帮助。
【解决方案2】:

使用BETWEEN 语法

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

【讨论】:

  • @Fred-ii- 好的,谢谢,我已经删除了我无知的所有痕迹。
  • 这不是无知,你没有意识到。你会惊讶于有多少人不知道keys 也是一个保留字。一个 25k 会员不知道这一点。不能指望人们熟记于心。因此,如有疑问,请查看 MySQL.com 网站 ;-) 然后是 SPATIAL 哈哈,现在有一个奇怪的。
  • 我认为您以非常礼貌的方式对我说的是 RTFM。对吗?
  • 根本不是里格斯。我有时也必须访问该页面(100%肯定)。这是另一个奇怪的ZEROFILL
猜你喜欢
  • 2020-03-27
  • 1970-01-01
  • 2020-02-05
  • 2016-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
相关资源
最近更新 更多