2017-02-16 206 views
0

我有一個MySQL數據庫,我需要從我的表格發送客戶端的一些數據,客戶端需要得到最近的事件日期,但沒有得到所有的日期(使用分頁已經在地方和工作正常)... ... 所以我需要提供客戶與日期最接近的事件首先,有一些事件在未來和一些過去(客戶端將通過分頁得到他們所有),因此order_by是它自己不夠好。Python SqlAlchemy按最靠近的日期排序

我使用這個: 事件= session.query(事件).filter(user.userID ==用戶ID).order_by(DESC( 'EVENTDATE')

任何想法如何實現這一目標

+0

如果兩個日期是由相同的區別分開。哪個應該先到? – xQbert

回答

0

Working SQL Fiddle

排序以天數從當前日期的日期的diff的絕對值?如果需要替換當前日期由用戶選擇的日期

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