【问题标题】:Python SqlAlchemy Order by closest datePython SqlAlchemy 按最近日期排序
【发布时间】:2017-02-16 22:06:24
【问题描述】:

我有一个 MySQL 数据库,我需要从我的表中向客户端发送一些数据,客户端需要获取最近的事件日期,但没有获取所有日期(使用已经到位且工作正常的分页)。 .. 所以我需要先向客户提供按日期最接近的事件,有些事件在未来,有些在过去(客户将通过分页获得所有事件),所以 order_by 自己不​​够好。

我正在使用这个: events = session.query(Event).filter(user.userID == userID).order_by(desc('eventDate')

知道如何实现吗?

【问题讨论】:

  • 如果两个日期相差相同。哪个应该先出现?

标签: python mysql sqlalchemy backend


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-01-31
    • 1970-01-01
    • 2021-10-31
    • 2018-04-24
    • 1970-01-01
    • 2011-08-22
    • 2011-11-05
    • 2012-03-01
    • 1970-01-01
    相关资源
    最近更新 更多