【发布时间】:2011-05-06 17:22:54
【问题描述】:
假设我想选择两个日期之间的所有记录加上该日期之前的一条记录和该日期之后的一条记录?所有记录都按日期排序。
【问题讨论】:
-
是日期还是日期时间?在日期时间之前/之后的一条记录可能相隔几秒钟……需要在此处明确说明。
假设我想选择两个日期之间的所有记录加上该日期之前的一条记录和该日期之后的一条记录?所有记录都按日期排序。
【问题讨论】:
您可以将联合与限制语句结合使用。类似于下面的内容(未经测试,无权访问 mysql)。
(select column from table where datefield > startdate and datefield < stopdate)
union
(select column from table where datefield < startdate order by datefield desc limit 1)
union
(select column from table where datefield > stopdate order by datefield limit 1)
这将为您提供下一行,无论它在日期方面落在哪里。
感谢语法修正,小马们。
【讨论】:
(select * from t where date < start_date order by date desc limit 1)
union (select * FROM t WHERE date between start_date and end_date)
union (select * from t where date > end_date order by date asc limit 1)
【讨论】:
您可以使用函数来添加或减去值,如下所示:
select * from table where field1 < ADDDATE( CURTIME() , INTERVAL 1 DAY)
查看此link,其中有一些示例。
【讨论】:
SELECT *
FROM table
WHERE date BETWEEN DATE_ADD(current_date(), INTERAL -1 DAY)
AND DATE_ADD(current_date(), INTERVAL 1 DAY);
【讨论】:
date 列上存在索引,则使用索引。