MySQL查询过去24小时内的行数

时间:2017-01-04 11:59:40

标签: python mysql sqlalchemy

我想返回行数,这是在过去24小时内添加到我的数据库中的行数。以下代码实际上应该有效:

id_24h_back = "SELECT id FROM table WHERE datetime = now() - INTERVAL 1 DAY;"
id_now = "SELECT id FROM table WHERE datetime = now();"
amount_rows = id_now - id_24h_back

我想这个代码实际上可以工作并给我我需要的结果,但问题是,每秒都没有一行,所以如果24h返回日期时间,我得到一个空集。 10:10:10,但下一个存在的行在10:10:11添加。

修改 我的解决方案现在看起来如下。

current_time = datetime.datetime.utcnow()
x_time_back = current_time - datetime.timedelta(hours=24)      #24h
qry = "SELECT something FROM table_name WHERE x_datetime between " + str(x_time_back.strftime("'%Y-%m-%d %H:%M:%S'")) + " and " + str(current_time.strftime("'%Y-%m-%d %H:%M:%S'"))
qry_res = db.engine.execute(qry)  

无论如何,感谢所有试图提供帮助的人。还要感谢那些无缘无故地回答我问题的人。

1 个答案:

答案 0 :(得分:1)

@mata是对的。这将为您计算计数开始时的计数和实际时间戳。

SELECT COUNT(*) count, NOW() - INTERVAL 1 DAY since
  FROM table
 WHERE datetime >= NOW() - INTERVAL 1 DAY

为了获得良好的效果,您需要在datetime列上添加索引。

专业提示:请勿使用数据类型名称,例如TIMESTAMPDATEDATETIME,以获取列名称。而是使用datestampinsertion_time或类似的东西。它将使编写和调试复杂查询变得更加容易。