2010-11-11 204 views
2

我獲得PostgreSQL的記錄,這類型爲timestamp without time zonepsycopg2處理時間戳沒有時區

我使用的psycopg2

如果我使用timestamp with time zone我可能會datetime對象。但是,目前情況並非如此。 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']) 

回答

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

太棒了!謝謝! – 2010-11-12 01:44:20

0

更新的人。至少psycopg2 2.7.1,「沒有時區的時間戳」返回一個日期時間。

所以your_time.strftime("%a, %d %b %Y %H:%M:%S +0000")現在只會工作。