mysql从今天的日期过去/未来中选择最接近的结果

时间:2012-09-28 16:40:22

标签: mysql

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

我有两张桌子:

  
      
  1. events
  2.   
  3. schedules带有外键事件。使用schedule_datetime_fromschedule_datetime_until
  4.   

Q值。选择所有活动时,我如何根据今天的日期获取/加入第一个最接近的时间表?例如,只返回最相关的时间表。

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

E.g e.schedule_datetime_from >= NOW() OR schedule_datetime_until > NOW()将仅返回未来的时间表,但我如何也返回过去的时间表。或者我是否需要使用ORDER BY + LIMIT 1来实现此目的?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

这对我有用:

SELECT * FROM table 日期(date_column) 日期(CURDATE())和DATE(CURDATE()+ 7)之间;

这会给你一个星期的抬头!

答案 2 :(得分:0)

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

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

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

ORDER BY date DESC LIMIT 1