1

我确信这是一项常见的任务,尽管我看过的所有示例都不能帮助我解决这个问题。

我有 2 张桌子:

  1. events
  2. schedules带有事件的外键。schedule_datetime_from和_schedule_datetime_until

问:选择所有事件时,我还将如何根据今天的日期获取/加入第一个最接近的时间表?例如,只返回最相关的时间表。

注意:每个事件可能有多个时间表。时间表也可能是过去的。

例如e.schedule_datetime_from >= NOW() OR schedule_datetime_until > NOW(),将只返回未来的时间表,但我如何也返回过去的时间表。还是我需要使用 ORDER BY + LIMIT 1 来实现这一点?

4

3 回答 3

2
select e.*, s.*
from 
    events e
    inner join 
    schedules s on e.id = s.event_id
order by 
    abs(unix_timestamp(schedule_datetime_from) - unix_timestamp(now())))
limit 1
于 2012-09-28T16:54:45.427 回答
1

这对我有用:

SELECT * FROM table WHERE DATE(date_column) BETWEEN DATE(CURDATE()) AND DATE(CURDATE()+7);

这会给你一个星期的提醒!

于 2014-05-09T01:37:23.910 回答
0

好吧,如果您想在日期之间选择一组事件,您可以使用

SELECT * FROM events WHERE date BETWEEN 'mm-dd-yyyy' AND 'mm-dd-yyyy'

如果您想选择最近的日期,您可以添加

ORDER BY date DESC LIMIT 1
于 2012-09-28T16:44:25.000 回答