php - MySQL ORDER BY 结合两个最接近今天的日期

标签 php mysql sql

我有一张 table

...         | reservation_from         | reservation_to         | ...
1           | 2016-05-13 10:00:00      | 2016-05-21 10:00:00    | ...
2           | 2016-05-13 20:00:00      | 2016-06-29 14:00:00    | ...
3           | 2016-05-01 10:00:00      | 2016-05-13 16:00:00    | ...

现在我必须在离今天最近的一天进行订购和预订。

例如现在是2016-05-13,所以无论预订是要开始还是要结束,我都必须得到最接近当前时间的结果。我想那样点菜

...         | reservation_from         | reservation_to         | ...
1           | 2016-05-13 10:00:00      | 2016-05-21 10:00:00    | ...
2           | 2016-05-01 10:00:00      | 2016-05-13 16:00:00    | ...
3           | 2016-05-13 20:00:00      | 2016-06-29 14:00:00    | ...

如您所见,第二个结果 reservation_from 是 05-01 但它的 reservation_to 小于第三个 reservation_from

我不知道我是否清楚这个问题,如果没有,请评论我应该详细说明什么。

最佳答案

您想按到现在的较小时差排序:

select *
from mytable
order by 
  least(abs(timestampdiff(second, now(), reservation_from)),
        abs(timestampdiff(second, now(), reservation_to)));

当然,您可以添加更多条件来处理平局。

关于php - MySQL ORDER BY 结合两个最接近今天的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37213795/

相关文章:

php - 将 sql 变量返回给 PHP

javascript - Window.open 在 chrome 上

session - 如何将 'unset' session 保存处理程序?

php - 是否有一个 "automated"过程可以在整个代码中更改 SQL 列名称?

sql - 根据另一列值更新列值

javascript - PHP 变量到 Javascript 输出 php 代码

mysql - mysql中单个schema的全局状态

php 数字从 mysql asc 排序

sql - Ruby Sequel 错误,表已存在

php - 插入查询不适用于 MySQL