Now()没有时区

 捕鱼达人2702938971 发布于 2023-02-07 18:33

我有一个added_at类型的列timestamp without time zone.我希望它的默认值是当前的日期时间但没有时区.该函数也now()返回一个时区.

我该如何解决这个问题?

3 个回答
  • 那么你可以这样做:

    SELECT now() AT TIME ZONE current_setting('TimeZone');
    SELECT now() AT TIME ZONE 'Europe/Paris';
    SELECT now() AT TIME ZONE 'UTC';
    

    不确定这对于"added_at"列是否有意义.您几乎总是希望绝对时间戳(带时区的时间戳)不是浮动时间戳.


    编辑以下几点的回复:

      是的,应该使用带时区(绝对时间)的时间戳,除非你有充分的理由不这样做.

      客户端时区由SHOW TimeZonecurrent_setting(...)如上所示给出.

    需要一些时间来浏览手册 - 它们很好地涵盖了所有这些.

    2023-02-07 18:35 回答
  • SELECT now()::timestamp
    

    就这样.演员表将时间戳转换为您时区的当前时间戳.这也是Postgres中标准SQL函数LOCALTIMESTAMP的实现方式.

    如果您不在多个时区操作,那就可以了.否则切换到timestamptzadded_at.区别?

    在Rails和PostgreSQL中完全忽略时区

    2023-02-07 18:35 回答
  • "当前日期/时间":

    CURRENT_TIME和CURRENT_TIMESTAMP提供带时区的值; LOCALTIME和LOCALTIMESTAMP提供没有时区的值.

    2023-02-07 18:36 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有