这是一个示例数据:
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
我希望这是在最近的日期和最后的过去日期最接近
的顺序答案 0 :(得分:5)
您需要在SORT
列上使用desc
start_Date
个功能。以下是将产生您想要的结果的查询。
select * from table1
order by Start_Date desc;
您可以查看sqlfiddle demo here
如果日期是将来的日期,则必须使用asc
来获得所需的结果。
select * from table1
order by Start_Date asc;
如果您的日期是过去和未来日期的混合,如下面的示例数据。
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
以下查询可以选择以更友好的格式显示数据。
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
它会按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
检查SQLfiddle demo here
答案 1 :(得分:2)
使用sql的ORDER BY
函数。像这样:
SELECT *
FROM
table_name
ORDER BY
start_date DESC;
答案 2 :(得分:1)
根据我的理解,下面是您的查询,请进一步了解。
使用可以根据需要使用“依据ASC | Desc”,
Marker
答案 3 :(得分:1)
您希望最近的日期来自todate,以便您可以尝试跟进查询
SELECT * FROM table
WHERE start_date >= now()
ORDER BY start_date ASC;
或强>
如果你想以崇敬的顺序,那么:
SELECT * FROM table
WHERE start_date <= now()
ORDER BY start_date DESC;
答案 4 :(得分:1)
您可以使用以下查询:
SELECT Booking_id, Name, start_date
FROM mytable
ORDER BY ABS(DATEDIFF(start_date, NOW()));
ORDER BY
子句按从今天的日期开始的距离排序。首先是距离最小的日期。
答案 5 :(得分:1)
这对你有用,
select * from table_name Order By start_date Desc;
答案 6 :(得分:1)
根据您的一条评论:
今天的记录遵循未来的记录,然后是旧的记录 端
这将首先排序今天和未来的日期,然后是过去的日期:
ORDER BY
CASE WHEN start_date >= CURRENT_DATE THEN 1 ELSE 2 END,
start_date
如果您希望旧日期按降序排序,则新旧日期的结果将按升序排序:
ORDER BY
CASE WHEN start_date >= CURRENT_DATE THEN 1 ELSE 2 END,
ABS(CURRENT_DATE - start_date)