MySQL获得MAX日期

时间:2014-12-04 19:55:59

标签: mysql

我有一个Events表和相关的EventAddress表。我想获得在特定日期且不到一定时间内具有最新时间的事件的地址。因此,如果今天有2个活动,一个在下午2点到下午3点,一个在下午5点到下午6点,我的下一个活动是在晚上7点到晚上8点,我希望得到比新活动开始时间早的结束时间的活动。所以在实例中,我希望事件的地址是下午5-6点。希望有道理。以下是我在尝试关注this SO post后到目前为止的情况。

SELECT
  ea1.Address,
  ea1.City,
  ea1.State,
  ea1.Zip,
  e.EventEndDate
FROM EventAddress ea1
  INNER JOIN (SELECT
      Events.EventAddressId,
      MAX(Events.EventEndDate) AS maxdate
    FROM Events
    GROUP BY Events.EventAddressId) max_record
    ON max_record.EventAddressId = ea1.EventAddressId
  INNER JOIN Events e
    ON ea1.EventAddressId = e.EventAddressId
WHERE DATE(e.EventStartDate) = '2014-11-06'
AND e.FranchiseId = 1
AND TIME(e.EventEndDate) <= '18:00:00'

编辑:内部SELECT返回正确的结果,但最终结果仍然是返回2个事件。

2 个答案:

答案 0 :(得分:0)

我认为你需要改变

WHERE DATE(e.EventStartDate) = '2014-11-06'
AND e.FranchiseId = 1
AND TIME(e.EventEndDate) <= '18:00:00'

到EventStartDate或EventEndDate。我不确定您的数据是如何构建的,但我假设它类似于&#39; 2014-11-06 18:00:00&#39;。如果是这样,您将需要使用相当于datepart的mysql。

答案 1 :(得分:0)

我将MAX(TIME(e.EventEndDate)) AS themax添加到外部选择