如何从mysql中获取当前日期的最近日期值

时间:2015-08-10 10:11:10

标签: php mysql

事件表

这是我的事件表我需要的是我需要从当前日期获取最接近的日期值。

当前表

--------------- --------------------------------------
events          future_dates      Conversion_Rate
--------------- --------------------------------------
One 1            01-08-2015        1000
One 1            03-08-2015        1000
One 1            06-08-2015        1000
One 1            07-08-2015        1000
One 1            10-08-2015        0
Two 1            13-08-2015        0
Two 1            14-08-2015        0
Two 1            16-08-2015        0
------------------------------------------------------

我的预期结果

--------------- --------------------------------------
events          future_dates      Conversion_Rate
--------------- --------------------------------------
One 1            07-08-2015        1000
One 1            10-08-2015        0
Two 1            13-08-2015        0
Two 1            14-08-2015        0
Two 1            16-08-2015        0
------------------------------------------------------

到目前为止我尝试了什么

select * from events where CURDATE() < Conversion_Rate

我需要的是我需要从当前日期和转换率获得最近的日期!='0'。如何在mysql中获得预期的结果?

4 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望在当前日期之前获取最新记录,该记录具有非零转化率以及当前日期及之后的所有其他记录。

如果是这样,UNION可能会对您有所帮助,如以下示例所示:

(
select * from table_name 
 where conversion_rate <> 0 
   and future_dates < current_date
 order by future_dates desc limit 1
) -- this fetches pre cur date recs
union
( -- this fetches cur and post cur date recs
select * from table_name 
 where future_dates >= current_date
)

答案 1 :(得分:0)

试试这个

SELECT *
FROM Table 
WHERE Conversion_Rate != 0
ORDER BY ABS(DATEDIFF(future_dates, NOW())) 
LIMIT 10

SELECT *
FROM table
WHERE Conversion_Rate != 0
ORDER BY ABS(now() - future_dates) DESC
limit 10

答案 2 :(得分:0)

Future_date应为'13 / 08/2015'。此记录应在今天显示。 我想你可能想要这个查询。

select * from events where CURRENT_DATE - INTERVAL 5 DAY <=future_dates and Conversion_Rate != 0

答案 3 :(得分:0)

select * 
from events 
where Conversion_Rate != '0' 
order by ABS(DATEDIFF(CURDATE(),future_dates )) asc