【问题标题】:python psycopg2 query error timestamp without time zonepython psycopg2查询错误时间戳没有时区
【发布时间】:2018-09-27 09:27:51
【问题描述】:

从我的python代码中我得到了方法:

def start_db(event, context):

    conn = db()

    cur = conn.cursor()



    datada = event['data_start']
    dataa = event['data_stop']

    if not datada or not dataa:
        dataa = str(datetime.datetime.now())
        datada = str(dataa - datetime.timedelta(days=7))      

    s_query = "SELECT * FROM a_usage WHERE (bk_tenant = '%s', data_start LIKE '%s'::timestamp, data_stop LIKE '%s'::timestamp);" % (event['bk_tenant'], datada, dataa)
    cur.execute(s_query)
    A = cur.fetchone()

    conn.commit()

    cur.close()
    conn.close()

    return A

但是当我运行我的代码(db 是 postgreSQL)时,会发生错误:

运营商不存在:没有时区的时间戳~~没有时区的时间戳

我的代码有什么问题?

提前致谢

【问题讨论】:

    标签: python python-3.x postgresql psycopg2


    【解决方案1】:

    目前尚不清楚您为何尝试在时间戳上使用LIKE,但这无法正常工作,因为运算符需要文本参数。

    您可以在时间戳上使用相等运算符:

    WHERE 
        bk_tenant = '%s' 
        AND data_start = '%s'::timestamp 
        AND data_stop = '%s'::timestamp
    

    LIKE 发短信:

    WHERE 
        bk_tenant = '%s' 
        AND data_start::text LIKE '%s' 
        AND data_stop::text LIKE '%s'
    

    另请注意,您应该使用布尔运算符 AND 而不是逗号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-12
      • 2011-07-15
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 2017-10-06
      • 2017-11-18
      • 2019-01-16
      相关资源
      最近更新 更多