2017-01-04 166 views
-1

我想返回在過去24小時內添加到數據庫的行數。下面的代碼應實際工作:MySQL查詢最近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) 

無論如何,所有試圖提供幫助的人都會感謝您。也感謝那些沒有理由低估了我的問題的人。

+2

'SELECT COUNT(id)FROM table WHERE datetime> now() - INTERVAL 1 DAY;'? – mata

+0

不要明白爲什麼這會降低選票... – saitam

回答

1

@mata是對的。這會給你計數和計數開始時的實際時間戳。

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

對於這種良好的性能,你需要在你的datetime列的索引。

專業提示:請勿使用數據類型名稱,例如TIMESTAMP,DATEDATETIME,列名稱。而應使用類似datestampinsertion_time或其他類似的東西。這將使編寫和調試複雜查詢變得更加容易。

相關問題