我正在使用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. 查询时间戳字段在Django
- 3. PHPMyAdmin 2时间戳字段
- 4. MySQL时间戳字段
- 5. 删除24小时前发生时间戳的所有字段
- 6. JPA/Hibernate的自动生成的时间戳字段没有加载
- 7. DateTimeField字段没有时间
- 8. PG Promise没有正确返回“带时区的时间戳”字段
- 9. datetime字段没有迁移django
- 10. 在django模型有一个默认的时间戳字段?
- 11. 将字符串时间戳插入到具有时间戳字段的db中
- 12. Django时间字段差异
- 13. Django 1.5 - 时间字段
- 14. SQL中DateTime字段的时间部分
- 15. Django的DateTimeField字段凌乱与天真,知道时间戳字段中的PostgreSQL
- 16. 不能插入unix时间戳到表的时间戳字段
- 17. Django:时间戳字符串自定义字段
- 18. 输出时区知道没有过滤器的django日期时间字段
- 19. datetme,mysql中的时间戳字段
- 20. 返回elasticsearch中的时间戳字段
- 21. Fload中的时间戳字段问题
- 22. Django的Postgres的时间字段到Python的datetime
- 23. ActiveModel时间戳记字段:时间戳记从哪里来?
- 24. mongoengine datetime字段和python日期时间
- 25. 从DateTime字段中删除时间
- 26. Postgresql:如何从时间戳,时区字段正确创建带时区的时间戳
- 27. 在Python中添加来自现有unix时间戳字段数据框的时间戳相关字段
- 28. cakePHP时间戳字段没有正确保存
- 29. MySQL按时间戳排序,没有该字段
- 30. 防止从Django的解析不正确的时间戳字段
谢谢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