如何解决从cx_oracle游标检索时区识别日期时间对象的正确方法是什么?
| cx_oracle为TIMESTAMP
或TIMESTAMP WITH TIME ZONE
类型的列返回datetime
实例,但是这些datetime实例不支持时区。
例如:
SELECT column_name,data_type FROM ALL_TAB_COLUMNS WHERE table_name = \'mytable\';
column_name data_type
----------- ---------------------------
MYCOL TIMESTAMP(6) WITH TIME ZONE
如您所见,MYCOL是一个时区识别的TIMESTAMP。我希望以下代码返回包含tzinfo数据的Python datetime对象。然而:
>>> cxoracle_cursor.execute(\"select mycol from mytable\")
>>> row = cx_oracle_cursor.fetchone()
>>> row[\'mycol\']
datetime.datetime(2011,6,15,8,30)
该datetime对象不支持时区,因此我无法在应用程序中可靠地使用该日期。
将此列作为可识别时区的datetime对象检索的最佳方法是什么?
解决方法
在这里,我看到以下内容:对于TIMESTAMP WITH TIME ZONE数据,datetime值始终为UTC,因此无需进行转换。
因此,如果您不知道“ 0”对象时区,则表示它是UTC。因此,您可以执行以下操作:
dt = pytz.utc.localize(row[\'mycol\'])
或尝试使用功能SYS_EXTRACT_UTC
(从具有时区偏移量的日期时间中提取UTC),然后再使用pytz.utc.localize
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。