2

cx_oracle はまたはタイプdatetimeの列のイ​​ンスタンスを返しますが、これらの datetime インスタンスはタイムゾーンに対応していません。TIMESTAMPTIMESTAMP WITH TIME ZONE

例えば:

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)

その日時オブジェクトはタイムゾーンに対応していないため、アプリケーションでこの日付を信頼して使用することはできません。

この列をタイムゾーン対応の日時オブジェクトとして取得する最善の方法は何ですか?

4

1 に答える 1

3

TIMESTAMP WITH TIME ZONE データの場合、datetime 値は常に UTC であるため、変換は必要ありません。

したがって、datetimeオブジェクトのタイムゾーンが認識されていない場合は、UTC であることを理解しています。したがって、次のことができます。

dt = pytz.utc.localize(row['mycol'])

SYS_EXTRACT_UTCまたは、関数(タイム ゾーン オフセットを使用して日時から UTC を抽出する) を試してから、 pytz.utc.localize.

于 2011-05-25T14:14:53.423 に答える