2017-06-15 96 views
1

我做,使用psycopg2查詢PostgreSQL數據庫的燒瓶中的應用。該數據庫具有格式爲YYYY-MM-DD HH:MI:SS的列時間戳。我只想打印符合當前時間的分鐘(查詢數據庫的那一刻)的結果。我想我正在尋找的是一個動態查詢。通過查詢當前時間(Postgres的,psycopg2,蟒蛇)

例如,在這裏我想打印的用戶當前活動的數量。

def userCount(conn): 
    cur = conn.cursor() 
    cur.execute("SELECT * from user_list WHERE timestamps = ?") 
    print 'Users currently active: ' + str(len(cur.fetchall())) 

我試圖將幾個不同的東西,其中問號的正上方,包括可變DT使用Python的日期時間模塊定義。沒有任何工作 - 我最終得到數據庫中所有用戶的數量,或者列不存在的錯誤。

要重申,我知道如何指定日期,時間參數,但我需要的是當前的日期,時間。什麼是正確的方法來做到這一點?

+1

定義活性。最後5分鐘? 10? –

+0

'從日期時間進口datetime'然後'cur.execute( 「SELECT * FROM USER_LIST WHERE時間戳=%s」 時,(datetime.now()代替(微秒= 0),))' – Abelisto

+0

@ClodoaldoNeto我想最近的數據,所以我認爲只是最後1分鐘。我需要在最後忽略秒鐘。 – Sarah

回答

1
intervalInSecs = 30; 

def userCount(conn): 
     cur = conn.cursor() 
     cur.execute("SELECT * from user_list WHERE timestamps > (current_timestamp - make_interval(secs := %s))", [intervalInSecs]) 
     print 'Users currently active: ' + str(len(cur.fetchall())) 
0

您可以使用數據庫日期?

WHERE timestamps = current_date 

或者,如果該值被存儲爲字符串:

WHERE timestamps = TO_CHAR(current_date, 'YYYY-MM-DD') 
+0

剛剛嘗試過current_date。沒有錯誤,但它沒有做到我想要的。它返回數據庫中所有用戶的計數,並且不會按當前日期/時間過濾。 – Sarah

+0

@Sarah'current_date'完全返回當前日期,沒有時間部分。改用'date_trunc('secs',current_timestamp)'。 – Abelisto