说我想使用SQLAlchemy在数据库中存储感知的datetime
(即带有时区偏移量的时间戳),并且我希望它可以与多种类型的关系数据库(SQLite,PostgreSQL,MySQL)一起用于Just Work™ ,Oracle等)。 SQLAlchemy为此提供了两种类型:DateTime
及其子类TIMESTAMP
。两者都采用可选的timezone
参数,可以将其设置为True
以便存储时区感知值。但是,我不清楚这两种类型之间的区别是什么,为什么/何时应该在另一种之上使用。
有趣的是,DateTime
文档说:
要支持时区,请至少使用
TIMESTAMP
数据类型(如果不是特定于方言的数据类型对象)。[关于
timezone
参数:]使用此标志时,建议直接使用TIMESTAMP
数据类型,因为某些数据库包含与时区不同的单独的通用日期/时间持有类型支持的TIMESTAMP数据类型,例如Oracle。
...提出了一个问题,如果我应该使用TIMESTAMP
,那么DateTime
的作用是什么?使用错误的列类型究竟会导致什么错误?