如果记录不存在,Php mysql获取最近的最新记录(基于日期时间)

时间:2012-07-26 11:22:53

标签: php mysql datetime select

试着理解,如果我选择WHERE item_id='$item_id' AND date(datetime)='2012-06-25'这样的记录,如果该记录不存在,那么我想在该日期之后获得最近的记录。如何在查询中实现这一目标?

我现在能想到的唯一方法是,如果num_of_rows为0,那么我将在当天提前3天添加并再次搜索并获取DESC datetime LIMIT 1(如果有多行) 。但谁知道我只用一个查询就可以做到。

记录可能在一天内有多行。因此,如果特定日期没有记录,如何获得给定相同$ item_id的下一个最近的可用数据?

3 个答案:

答案 0 :(得分:4)

SELECT *
 FROM table
 WHERE field <= '2012-06-25'
 ORDER BY field DESC
 LIMIT 1

答案 1 :(得分:0)

这将返回最接近您在查询中输入的日期的项目。但是,它不会在之前或之后查找,只需查找与您输入的内容最接近的日期。

select 
     min(abs(DATEDIFF(date(datetime),'2012-06-25'))) as minDiff
    ,yourID
from table1 
group by yourID 
order by 1 asc;

答案 2 :(得分:0)

我认为这就是你要找的东西:

SELECT *
FROM my_table
WHERE datetime BETWEEN '2012-06-25 00:00:00' AND 
                       DATE_ADD('2012-06-25 00:00:00', INTERVAL 3 DAY)
ORDER BY datetime ASC
LIMIT 1;

还可以在字段日期时间创建索引,以提高性能。