2017-02-16 18 views
0

私はMySQLデータベースを持っており、私のテーブルからいくつかのデータをクライアントに送る必要があります。クライアントは最も近いイベント日付を取得する必要がありますが、 ...) 私は日付に最も近いイベントをクライアントに最初に提供する必要があります。将来はいくつかのイベントがあり、過去にはいくつかのイベントがあります(クライアントはすべてをページングで取得します)。それだけでは十分ではありません。Python SqlAlchemy最も近い日付で注文する

私はこれを使用しています: イベント= session.query(イベント).filter(user.userID ==ユーザーID).order_by(DESC( 'EVENTDATE')

これを達成するためにどのように任意のアイデアを

?現在の日付からの日数で日付の差分の絶対値で
+0

2つの日付が同じ違いで区切られている場合。それは最初に来るはずですか? – xQbert

答えて

0

Working SQL Fiddle

ソート?必要に応じて、ユーザーが選択した日付の現在の日付に置き換え

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 
関連する問題