首页 > 解决方案 > 我应该何时使用 DateTime(timezone=True) 以及何时使用 TIMESTAMP(timezone=True)?

问题描述

假设我想datetime使用 SQLAlchemy 在数据库中存储感知 s(即带有时区偏移的时间戳),并且我希望它能够与尽可能多类型的关系数据库(SQLite、PostgreSQL、MySQL、Oracle 等)一起工作. SQLAlchemy 为此提供了两种类型:DateTime及其子类TIMESTAMP。两者都采用一个可选timezone参数,可以设置为True以存储时区感知值。但是,我不清楚这两种类型之间的区别是什么,或者为什么/何时应该使用一种而不是另一种。

有趣的是,DateTime文档说:

对于时区支持,至少使用TIMESTAMP数据类型,如果不是方言特定的数据类型对象。

[timezone论点:] 建议TIMESTAMP在使用此标志时直接使用数据类型,因为某些数据库包含单独的通用日期/时间保持类型,与支持时区的 TIMESTAMP 数据类型不同,例如 Oracle。

...这提出了一个问题,如果我应该使用TIMESTAMP,那是DateTime为了什么?使用错误的列类型究竟会出现什么问题?

标签: pythonpython-3.xdatetimesqlalchemy

解决方案


推荐阅读