Скажем, я хочу хранить осведомленные datetime
с (т. Е. Временные метки со смещением часового пояса) в базе данных, используя SQLAlchemy, и я хочу, чтобы она просто работала с таким же количеством типов реляционных баз данных (SQLite, PostgreSQL, MySQL, Oracleи т. д.) насколько это возможно.Для этой цели SQLAlchemy предлагает два типа: DateTime
и его подкласс TIMESTAMP
.Оба принимают необязательный аргумент timezone
, который может быть установлен на True
для хранения значений с учетом часового пояса.Однако мне не ясно, в чем разница между этими двумя типами или почему / когда я должен использовать один над другим.
Интересно, что в документах DateTime
написано:
Для поддержки часовых поясов используйте как минимум тип TIMESTAMP
, если не объект типа данных, специфичный для диалекта.
[В аргументе timezone
:] Рекомендуется использовать TIMESTAMP
Тип данных напрямую при использовании этого флага, так как некоторые базы данных включают отдельные общие типы хранения даты / времени, отличные от типа данных TIMESTAMP с поддержкой часового пояса, такие как Oracle.
..., который поднимает вопрос, еслиЯ должен использовать TIMESTAMP
, тогда для чего DateTime
?Что именно может пойти не так с использованием неправильного типа столбца?