4

我的表中有以下日期。如何找到距今天最近的日期(如果有今天的日期),或者如果没有今天的日期,那么最近的过去日期?

2012-10-01          aa123
2012-10-02          aa43
2012-10-03          aa478
2012-10-04          aa40    
2012-10-05          aa54
2012-10-06          de34
2012-10-07          a5434
2012-10-08          r4t
2012-10-09          x34
2012-10-10          q23
2012-10-11          b53

因此,如果今天是'2012-10-07',那么记录将是a5434。但如果2012-10-07丢失,则记录将de34属于哪个记录,2012-10-06因为那将是距今天最近的过去一天。

我不确定从哪里开始,所以我还没有尝试过任何东西。需要一个sql解决方案。

4

2 回答 2

11

这很简单,只需获取最后一个日期 <= 当前日期之一:

$now = date("Y-m-d");
$sql = "SELECT * FROM date_table where date_field <= '$now' ORDER BY date_field DESC LIMIT 1 OFFSET 1";
于 2012-10-26T00:18:31.897 回答
2

向查询中添加ORDER BY语句。以下将按日期对行进行排序,最新的在顶部,最旧的在底部。

SELECT `id`, `date` FROM `table` ORDER BY `date` DESC LIMIT 1;
于 2012-10-26T00:15:20.993 回答