python - Django MySQL 查询 - 选择比上一行大 60 分钟的日期时间?

标签 python mysql django

我有一个名为“start_time”的datetime 模型。

假设我做基本的选择查询:

results = MyModel.objects.filter(start_time=somedate).order_by('start_time')

我会得到类似的东西:

2015-07-10 17:15:00
2015-07-10 19:15:00
2015-07-10 19:45:00
2015-07-10 21:15:00
2015-07-10 21:45:00

我的目标是排除所有比前一行至少大 60 分钟的行,这样我会得到这个结果:

2015-07-10 17:15:00
2015-07-10 19:15:00
2015-07-10 21:15:00

有什么建议吗?

最佳答案

相应的 sql 查询可能如下所示:

SELECT * FROM Table
WHERE 
  start_time > somedate
GROUP BY 
  DATE(start_time), 
  HOUR(start_time)

我不确定django ORM 是否支持这种GROUP BY。如果没有,您可以尝试使用原始 sql。

编辑: 60 分钟或 1 小时通过按日期-小时分组来掩盖。然后它取每组的第一个元素。如果您谈论的是 90 分钟或任何不适合日期时间字段的内容,恐怕这种方法将行不通。过滤应该手动完成。

关于python - Django MySQL 查询 - 选择比上一行大 60 分钟的日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31613701/

相关文章:

python - 使现有数据库适应 Django 应用程序

python - 我可以在字符串上使用 K-means 算法吗?

php - Mysql 使用特殊字符搜索匹配查询

java - 使用Java代码将.sql文件导入MySQL

python - 加载psycopg2模块时出现"undefined symbol: _PyObject_NextNotImplemented"错误

python - 我想通过表单数据发送邮件。我希望接收者固定,发送者仅改变。我怎样才能实现这一点?

python - 如何修改字节数组?

php - PHP 中的 MongoDb 更新

django - 没有名为 'django.contrib.admin.templatetags.admin_static' 的模块

python - 更改编码python时数据从文件中消失