从数据库中获取最新日期(但获取具有该最新日期的所有行)

时间:2014-07-02 09:20:33

标签: mysql date

我正在创建一个显示开放时间的小应用程序。

它的工作方式如下:我生成一个日期列表,然后检查数据库是否打开。

数据库normal包含:

day_of_week |  open  |  close |  since
   INT(11)  |  TIME  |  TIME  |  DATE
------------|--------|--------|------------
     1      |09:00:00|17:00:00|2013-01-09
     2      |08:00:00|18:00:00|2014-01-06
...    

从开幕时间开始的那个日期以来的日期显示(所以我可以回顾过去并获得正确的时间以及未来。)

在我的日期列表中,我检查since >= $date_in_list是否只显示最大值:

 SELECT *,MAX(since) FROM normal WHERE day_of_week = '2' AND since <= '2014-06-03'

这样可以正常工作,除非我有2个小时的相同日期(例如我们在中午关闭时)。

所以当我有这样的数据时:

day_of_week |  open  |  close |  since
------------|--------|--------|------------
     2      |09:00:00|12:00:00|2014-01-06
     2      |14:00:00|18:00:00|2014-01-06

我想在09:00:00 - 12:00:00和14:00:00 - 18:00:00之间获得,但我似乎无法找到正确的查询。

2 个答案:

答案 0 :(得分:2)

使用子查询怎么样?沿着这些方向的东西

SELECT *
FROM normal
WHERE day_of_week = '2'
    AND since = (
        SELECT MAX(since)
        FROM normal
        WHERE day_of_week = '2'
    )

答案 1 :(得分:0)

尝试像这样的GROUP BY子句

SELECT *,
       MAX(since)
FROM normal
WHERE day_of_week = '2'
  AND since <= '2014-06-03'
GROUP BY `since`,`open`,`close`;