我想返回行数,这是在过去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)
无论如何,感谢所有试图提供帮助的人。还要感谢那些无缘无故地回答我问题的人。
答案 0 :(得分:1)
@mata是对的。这将为您计算计数开始时的计数和实际时间戳。
SELECT COUNT(*) count, NOW() - INTERVAL 1 DAY since
FROM table
WHERE datetime >= NOW() - INTERVAL 1 DAY
为了获得良好的效果,您需要在datetime
列上添加索引。
专业提示:请勿使用数据类型名称,例如TIMESTAMP
,DATE
或DATETIME
,以获取列名称。而是使用datestamp
或insertion_time
或类似的东西。它将使编写和调试复杂查询变得更加容易。