我有一个MySQL数据库,我需要从我的表中向客户端发送一些数据,客户端需要获得最接近的事件日期但没有得到所有的日期(使用已经存在并且工作正常的分页)。 .. 所以我需要首先按照日期为客户提供最接近的事件,将来会有一些事件,过去有些事件(客户端会通过分页获得所有事件)所以order_by不够自己。
我正在使用这个: events = session.query(Event).filter(user.userID == userID).order_by(desc('eventDate')
知道如何实现这个目标吗?
答案 0 :(得分:0)
按当前日期的天数差异的绝对值排序?如果需要,用当前日期替换用户选择的日期
Create table foo(
ID int,
eventDate date);
Insert into foo (ID, eventDate)
values (1,'2017-01-01'),
(2,'2017-01-02'),
(3,'2017-01-03'),
(4,'2017-01-04'),
(5,'2017-01-05'),
(6,'2017-01-06'),
(7,'2017-01-07'),
(8,'2017-01-08'),
(9,'2017-01-09');
SELECT *
FROM foo
ORDER BY abs(dateDiff(eventDate,'2017-01-05')), EventDate
返回:
ID eventDate
5 January, 05 2017 00:00:00
4 January, 04 2017 00:00:00
6 January, 06 2017 00:00:00
3 January, 03 2017 00:00:00
7 January, 07 2017 00:00:00
2 January, 02 2017 00:00:00
8 January, 08 2017 00:00:00
1 January, 01 2017 00:00:00
9 January, 09 2017 00:00:00