我正在使用Django應用程序,我需要以UTC保存所有postgres表示的日期時間字段(他們應該)。當我使用日期時間字段創建模型時,他們將數據庫表示形式生成爲「時間戳,時區爲」。 儘管我可以手動修改表格以從字段中刪除時區,但我想知道DateTime模型字段是否有能力不這樣做 - 即爲某些字段創建「時間戳帶有時區」。 這可能嗎?或者我必須改變它們的表格? 謝謝, HarelDjango DateTime字段生成沒有時區的時間戳字段
3
A
回答
4
Django中postgres的數據類型映射到字符串文字timestamp with time zone
,似乎沒有改變該類型的選項。
據我所知,你有三種選擇:
充分利用Django的鉤執行raw sql after the create table statement。爲此,請在您的應用中創建一個名爲
sql
的目錄,並在該目錄中創建一個名爲mymodel.postgres_psycopg2.sql
的文件。將您的alter table語句放在那裏。編寫自定義字段以根據需要定義時間戳字段的修飾符。參見「writing custom model fields」。
讓django字段保持原樣,並在應用程序中執行時區轉換,以便您完全確定您正在傳遞正確的時間。
我個人對數據完整性的偏好是#3。就像字符編碼一樣,在那裏你總是想知道字符集並正確處理轉換,對於其屬性(包括TZ)被精確定義的日期/時間,我感覺更加舒適。您今天可能確定您的所有輸入已經以UTC來到您的應用程序,但可能會發生變化,特別是如果時間戳由最終用戶提供。對於它的價值,我會多花一點時間,將應用程序中的時間戳轉換爲UTC,然後將其存儲在數據庫中,以UTC作爲時區。
相關問題
- 1. 查詢時間戳字段在Django
- 2. PHPMyAdmin 2時間戳字段
- 3. MySQL時間戳字段
- 4. JPA/Hibernate的自動生成的時間戳字段沒有加載
- 5. datetime字段沒有遷移django
- 6. 在django模型有一個默認的時間戳字段?
- 7. 將字符串時間戳插入到具有時間戳字段的db中
- 8. Django時間字段差異
- 9. 不能插入unix時間戳到表的時間戳字段
- 10. Django的DateTimeField字段凌亂與天真,知道時間戳字段中的PostgreSQL
- 11. Django:時間戳字符串自定義字段
- 12. 返回elasticsearch中的時間戳字段
- 13. datetme,mysql中的時間戳字段
- 14. Django的Postgres的時間字段到Python的datetime
- 15. ActiveModel時間戳記字段:時間戳記從哪裏來?
- 16. mongoengine datetime字段和python日期時間
- 17. 從DateTime字段中刪除時間
- 18. cakePHP時間戳字段沒有正確保存
- 19. MySQL按時間戳排序,沒有該字段
- 20. Linq到SQL和時間戳字段
- 21. MySQL查詢UNIX時間戳字段
- 22. 如何不更新時間戳字段
- 23. Logstash神交解析時間戳字段
- 24. 時間戳字段到Oracle使用SQLLOADER
- 25. Django Rest Framework - 日期時間字段的時區
- 26. 從一個時間戳字段添加時間到其他字段
- 27. 檢索「時間」字段時區錯誤?
- 28. PHP生成時間戳沒有特殊字符
- 29. 如何添加日期時間字段有時間字段
- 30. linq groupby沒有時間字段vb.net
謝謝Jarret, 我在我的應用程序中進行時區轉換,因爲我不信任任何具有時區的人; o)我打算將所有日期存儲爲UTC,並且由於我知道用戶的時區,所有用戶輸入的日期都將轉換爲UTC,然後將任何內容保存到數據庫。 但是,我想將創建/修改日期當作UTC來處理,但是好像Django會在字段中保存時區偏移量,即使我的settings.TIMEZONE是UTC(如果我在第25天保存了創建日期將它保存爲+01的偏移量,因爲英國在DST那一次。因此,爲什麼我想殺死db tz info。 – Harel 2009-12-08 20:29:07
有道理......在這種情況下,我會投票選擇上面的選項# – 2009-12-08 20:32:37
另一種選擇是以UTC運行服務器本身。 http://serverfault.com/questions/14685/local-timezones-on-servers-considered-harmful – Harel 2009-12-08 22:21:02