2009-12-15 18 views
0

在Python中存儲時間(在我的情況下,在ZODB中,但適用於任何數據庫),你使用什麼格式(時代,日期時間等),爲什麼?在Python中存儲時間 - 最佳格式?

+0

什麼時候用於?你需要輕鬆比較它們嗎?您是否想要輕鬆查找給定時區的每個星期三?您是否存儲時間跨度爲一天,30天,300天,3000天或?提出更好的問題,得到更好的答案。 – Kurt 2009-12-31 07:31:17

回答

5

datetime模塊具有現代Python處理日期和時間的標準類型,我使用它,因爲我喜歡標準(我也認爲它設計得很好);我通常也通過pytz獲得時區信息。

當然,大多數數據庫都有自己的標準存儲日期和時間的方式,但現代化的數據庫Python適配器通常支持datetime(另一個很好的理由使用它;-)在Python方面 - 例如,這就是我通過Google App Engine的存儲,Python自己的嵌入式SQLite等獲得的結果。

5

如果數據庫具有本機日期時間格式,即使涉及編碼和解碼,我也會嘗試使用該格式。即使這不是100%標準的,例如SQLITE,我仍然會使用SQLITE3 help page底部附近描述的日期和時間適配器。

在所有其他情況下,我會使用ISO 8601 format,除非它是存儲對象的某種二進制編碼的Python對象數據庫。

ISO 8601格式是可排序的,在數據​​庫中通常需要索引。此外,它是明確的,所以你知道2009-01-12是在一月份,而不是在十二月份。那些改變月份和日期位置的人總是把年份放在最後,因此首先停止人們自動採取不正確的格式。

當然,您可以重新格式化,但您希望在應用程序中進行顯示和輸入,但數據庫中的數據通常使用其他工具而不是您的應用程序查看。

0

自時代以來的秒數是存儲時間數據的最緊湊和便攜式格式。例如,MySQL中的原生DATETIME格式需要8個字節,而不是TIMESTAMP的4個字符(自紀元以來的秒數)。如果您需要從多個地理位置的客戶處獲得時間,則還可以避免時區問題。邏輯運算(用於排序等)在整數上也是最快的。

相關問題