【问题标题】:MySQL get MAX dateMySQL获取最大日期
【发布时间】:2014-12-04 19:55:59
【问题描述】:

我有一个事件表和相关的 EventAddress 表。我想获取在特定日期具有最晚时间且小于给定时间的事件的地址。因此,如果今天有 2 个事件,一个在 2pm-3pm,一个在 5pm-6pm,而我的下一个事件是在 7pm-8pm,我希望获得结束时间早于新事件开始时间的事件。所以在这个例子中,我想要下午 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 个事件。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    我认为你需要改变

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

    到 EventStartDate 或 EventEndDate。我不确定您的数据结构如何,但我假设它类似于“2014-11-06 18:00:00”。如果是这样,您将需要使用 mysql 等效的 datepart。

    【讨论】:

    • DATE()TIME() 是日期部分的等价物。我可以将 EventStartDate 更改为 EventEndDate 但不会产生影响,因为它们都是相同的日期。
    • 这是有道理的。你试过 MAX(TIME(e.EventEndDate))。
    • 不,但这给了我一个想法。我在外部选择中添加了MAX(TIME(e.EventEndDate)) AS themax,它似乎正在工作。
    • 太好了,很高兴为您提供帮助
    【解决方案2】:

    我在外部选择中添加了MAX(TIME(e.EventEndDate)) AS themax

    【讨论】:

      猜你喜欢
      • 2017-08-11
      • 2017-11-04
      • 1970-01-01
      • 2010-10-26
      • 2022-10-13
      • 1970-01-01
      • 2013-02-15
      • 2020-02-05
      • 1970-01-01
      相关资源
      最近更新 更多