社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

如何停止django postgresql timestramp转换

CHIDAMBARANATHAN M • 6 年前 • 2114 次点击  

当我在EST(2019-02-21 05:37:46)的Postgres表中插入时间戳时,Postgresql表存储在IST(2019-02-21 16:07:46)中。我只想把时间储存在科技部。有人能帮我解决这个问题吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49747
文章 [ 2 ]  |  最新文章 6 年前
dirkgroten
Reply   •   1 楼
dirkgroten    7 年前

一般来说,您应该以UTC格式处理所有日期时间,因为这些都是绝对时间戳,总是正确的。即使你只打算让EST时区的用户使用你的网站,EST时区在夏天有夏令时(DST),所以当时间跳跃时,你可能会出现错误行为(特别是当时钟倒转时有一个小时的重叠)。这意味着:

  • 您的代码应该使用UTC时间戳进行计算并传递
  • 您的数据库应该存储UTC日期时间(PostgreSQL也会这样做)。

向用户显示数据时,应仅转换为本地时区。这是Django的默认行为:

  • USE_TZ = True 默认情况下
  • TIME_ZONE = "America/New_York" 设置默认时区,将考虑DST

因此,当您将一个具有时间意识的日期时间保存到数据库时(以EST为单位),数据库将其存储为UTC。当您获取并显示它时,Django将在用户的当前时区(在您的情况下是EST)中显示它。当您直接使用工具查询数据库时,PostgreSQL会返回UTC,正确的日期时间,但是您的shell或工具可能会在本地时区中显示它。您可以使用另一个答案中@c.grey发布的链接将查询格式化为使用不同的时区。

详细阅读 here

c.grey
Reply   •   2 楼
c.grey    7 年前

在postgres中,您可以更改 日期时间 使用集合n postgres,可以使用集合更改日期时间的默认格式掩码 日期样式

有关更多详细信息,请遵循以下内容 link

也请参考 link

据我所知,PostgreSQL中没有任何设置会在默认情况下从时间戳文本中删减秒数