psycopg2 для работы с отметкой времени без часового пояса - PullRequest
2 голосов
/ 11 ноября 2010

Я получаю запись из PostgreSQL, тип которой timestamp without time zone

Я использую psycopg2

Я могу получить datetime объект, если использую timestamp with time zone. Но в настоящее время это не так. http://initd.org/psycopg/docs/usage.html#time-zones-handling

Я понимаю, что вместо этого получаю тип с плавающей точкой.

Как я могу предположить, чтобы получить значение, как из данного числа?

Jan 07, 2010
16:38:49

    connection.cursor.execute(sql, data)
    records = connection.cursor.fetchall()

    # In PostgreSQL, type is "timestamp without time zone"

    # <type 'float'>
    print type(record['_start_timestamp'])
    # 1.28946608161e+12
    print record['_start_timestamp']
    # TypeError: argument must be 9-item sequence, not float
    print time.strftime("%a, %d %b %Y %H:%M:%S +0000", record['_start_timestamp'])

Ответы [ 2 ]

3 голосов
/ 11 ноября 2010

Значение с плавающей точкой, которое вы получаете, похоже, составляет миллисекунды от эпохи.Так что это, кажется, дает то, что вы ищете:

#!/usr/bin/python

from datetime import datetime
import time

your_time = 1.28946608161e+12

print time.strftime("%a, %d %b %Y %H:%M:%S +0000",
                    datetime.fromtimestamp(your_time/1000).timetuple()
                    )
0 голосов
/ 05 января 2018

Обновление для новых людей. Начиная с версии psycopg2 2.7.1, «отметка времени без часового пояса» возвращает дату и время.

Так что your_time.strftime("%a, %d %b %Y %H:%M:%S +0000") теперь будет просто работать.

...