2


0

タイムゾーンなしでタイムスタンプを処理するpsycopg2

PostgreSQLからレコードを取得します。そのタイプは「タイムゾーンのないタイムスタンプ」です

私はpsycopg2を使用しています

「タイムゾーン付きタイムスタンプ」を使用している場合、「datetime」オブジェクトを取得する可能性があります。 しかし、現時点ではそうではありません。 http://initd.org/psycopg/docs/usage.html#time-zones-handling

代わりにfloat型を取得していることに気付きました。

指定されたフロートから値を取得するにはどうすればよいですか?

Jan 07, 2010
16:38:49

'' '' '

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

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

    #
    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 Answer


3


取得するfloat値は、エポックからのミリ秒のようです。 したがって、これはあなたが探しているものを与えるようです:

#!/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


新しい人向けの更新。 少なくともpsycopg2 2.7.1では、「タイムゾーンのないタイムスタンプ」は日時を返します。

したがって、 `your_time.strftime("%a、%d%b%Y%H:%M:%S +0000 ")`が機能するようになりました。