我正在制作一个使用psycopg2查询postgreSQL数据库的Flask应用程序。数据库有一列时间戳,格式为YYYY-MM-DD HH:MI:SS。我想打印的结果只匹配当前时间到分钟(我查询数据库的那一刻)。我认为我正在寻找的是动态查询。
例如,这里我想打印当前活跃的用户数。
def userCount(conn):
cur = conn.cursor()
cur.execute("SELECT * from user_list WHERE timestamps = ?")
print 'Users currently active: ' + str(len(cur.fetchall()))
我已尝试在问号上方放置几个不同的内容,包括使用python&timers模板定义的变量 dt 。什么都没有用 - 我要么最终得到数据库中所有用户的计数,要么是该列不存在的错误。
重申一下,我知道如何指定日期时间参数,但我需要的是CURRENT日期时间。这样做的正确方法是什么?
答案 0 :(得分:2)
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()))
答案 1 :(得分:0)
您可以使用数据库日期吗?
WHERE timestamps = current_date
或者,如果值存储为字符串:
WHERE timestamps = TO_CHAR(current_date, 'YYYY-MM-DD')