我有一个表
... | 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)));
当然,你可以添加更多的标准来处理关系。
USELEAST。将计算每个字段与今天的差异,选择较小的字段。
SELECT *
FROM YourTable
ORDER BY LEAST( ABS(TIMEDIFF(reservation_from, CURDATE()),
ABS(TIMEDIFF(reservation_to , CURDATE())
)