SQL获取最近的日期记录

Par*_*ale 0 php sql yii

这是一个示例数据:

 Booking_id   Name   start_date
   1            abc   1/1/2018
   2            efg   5/2/2018
   3            pqr   16/1/2018
   4            xyz   19/2/2018
Run Code Online (Sandbox Code Playgroud)

我希望这是最接近今天的日期和最后的过去日期

zar*_*ruq 5

你需要SORT desc列上的功能start_Date.以下是将产生您想要的结果的查询.

select * from table1
order by Start_Date desc;
Run Code Online (Sandbox Code Playgroud)

你可以在这里查看sqlfiddle演示

如果日期是将来,您必须使用asc以获得所需的结果.

select * from table1
order by Start_Date asc;
Run Code Online (Sandbox Code Playgroud)

如果您的日期是过去和未来日期的混合,如下面的示例数据.

ID Name   Start_Date
---------------------
1  abc   2018-01-01
2  efg   2018-02-05
3  pqr   2018-01-16
4  xyz   2018-02-19
1  abc   2017-01-01
2  efg   2017-02-05
3  pqr   2017-01-16
4  xyz   2017-02-19
Run Code Online (Sandbox Code Playgroud)

下面的查询可以选择以更友好的格式显示数据.

select * from (
select * from table1
where start_date < current_date
order by start_date desc
) as B
union
select 0,'TODAY_DATE', current_date
union
select * from (
select * from table1
where start_date > current_date
order by start_date asc
) as A 
Run Code Online (Sandbox Code Playgroud)

它将按desc顺序对过去的日期数据进行排序,然后将TODAY日期添加到结果中,然后asc按以下格式添加未来数据.

 ID  Name        Start_Date
--------------------------
4   xyz         2017-02-19
2   efg         2017-02-05
3   pqr         2017-01-16
1   abc         2017-01-01
0   TODAY_DATE  2017-08-18
1   abc         2018-01-01
3   pqr         2018-01-16
2   efg         2018-02-05
4   xyz         2018-02-19
Run Code Online (Sandbox Code Playgroud)

在这里查看SQLfiddle演示

  • 这个返回记录的顺序不是最近的日期 (3认同)