为了账号安全,请及时绑定邮箱和手机立即绑定

PostgreSQL SQLalchemy 和时间戳带时区,为什么隐身与正常不同?

PostgreSQL SQLalchemy 和时间戳带时区,为什么隐身与正常不同?

忽然笑 2021-10-26 18:32:26
我正在使用 Flask sqlalchemy 和 postgreSQL 并且显示的日期时间有问题,在调查这个问题时我发现了另一个奇怪的事情:在隐身模式(chrome 浏览器选项卡)下创建数据库条目会给出不同/错误的时间。编辑:它与隐身模式无关,这两种情况也发生在正常模式下。我还没有弄清楚为什么。这是代码:我更改了数据库的默认时区:ALTER DATABASE postgres SET timezone TO 'Europe/Berlin';该模型:class User(UserMixin, Base):    __tablename__ = 'users'    date_added = Column(DateTime(timezone=True), nullable=False)我用来将日期时间添加到数据库的方法:date_added=datetime.today()它在数据库中的外观(此时我的本地时间是 13:53:46):不在隐身模式下创建条目timestamp with time zone2019-02-01 13:53:46.73817+01在隐身模式下创建条目timestamp with time zone2019-02-01 12:53:46.73817+01这真的让我担心。这是错误的。即使我将日期时间对象转换为本地时间。两个条目同时完成,但显示不同的结果,这怎么可能?同样在 HTML 中查看这些日期时,postgreSQL 不会应用偏移量,因此第一个日期看起来正确,但第二个日期是错误的。最初我只是想找到一种方法来在欧洲/柏林存储所有日期时间对象并在欧洲/柏林时间返回它们,所以我不必将 UTC 转换为欧洲/柏林,但现在我认为出现了可怕的错误。我也到处都仔细检查了我的代码,我没有使用其他方法来操作日期时间对象。编辑每次用户登录时,我都会保存一个日期时间。目前我在非隐身模式下尝试过。我的本地时间是14:13:33但它保存到数据库中: 2019-02-01 13:13:33.804339+01。这怎么可能?我知道它不能是随机的,但现在看起来它的保存时间是随机的,有时是带有偏移量的 UTC,有时是带有偏移量的欧洲/柏林。编辑我仔细检查了所有有问题的表格SHOW timezone;,它们都正确返回Europe/Berlin
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 235 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号