временная метка ошибки запроса python psycopg2 без часового пояса - PullRequest
0 голосов
/ 27 сентября 2018

Из моего кода на 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), возникает ошибка:

оператор не существует:временная метка без часового пояса ~~ временная метка без часового пояса

что не так в моем коде?

Заранее спасибо

1 Ответ

0 голосов
/ 27 сентября 2018

Непонятно, почему вы пытаетесь использовать 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 (OR).

...