加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何设置Postgresql数据库永久查看日期为“MDY”

发布时间:2020-12-13 16:23:34 所属栏目:百科 来源:网络整理
导读:如何设置我的数据库以在不运行的情况下将“日期”视为“MDY”: SET datestyle = "ISO,MDY"; 我每次都试图访问它? 我正在使用Postgresql版本9.1,Ubuntu 12.04. 我的系统区域设置,在数据库安装时设置为en_CA.utf8,我最近将其更改为en_US.utf8. show lc_CTYPE
如何设置我的数据库以在不运行的情况下将“日期”视为“MDY”:
SET datestyle = "ISO,MDY";

我每次都试图访问它?
我正在使用Postgresql版本9.1,Ubuntu 12.04.
我的系统区域设置,在数据库安装时设置为en_CA.utf8,我最近将其更改为en_US.utf8.

show lc_CTYPE

返回: – > “en_CA.UTF-8”

show LC_CoLLATE

返回: – > “en_CA.UTF-8”

我曾经在几年前遇到过类似的问题,然后发现我能做到
ALTER DATABASE database_name SET datestyle TO "ISO,MDY";

试试吧. (这适用于每个数据库,对于所有数据库的解决方案,请在postgresql.conf中设置此参数 – 感谢@a_horse_with_no_name.)

请注意,默认设置为not locale independent.但是,在initdb将其设置为任意后,您可以在postgresql.conf中自行更改.

@ swasheck的评论让我注意到我的设置:

test=# SHOW lc_ctype;
      lc_ctype
--------------------
 Hungarian,Hungary
(1 row)


test=# SHOW lc_time;
      lc_time
--------------------
 Hungarian,Hungary
(1 row)

设置datestyle具有以下效果:

SET datestyle TO "ISO,MDY";

SELECT current_date;
    date
------------
 2012-06-21
(1 row)

现在这并不是真正的预期 – 在en_US.UTF8的其他服务器上也是如此.尝试“ISO,DMY”也告诉我,“ISO”部分在产生输出时或多或少地覆盖了另一部分.对于输入值,它具有预期的效果,如下表所示:

input values
           '2016/01/21'   '01/21/2016'   '21/01/2016'         output
──────────────────────────────────────────────────────────────────────
ISO,YMD        OK             --             --            2016-01-21
ISO,DMY        --             OK             --            2016-01-21
ISO,MDY        --             --             OK            2016-01-21

– 表示给定的输入样式导致给定日期样式设置的错误.

仔细阅读文档后,可以看到datestyle是一对部分冲突的设置:

For historical reasons,this variable contains two independent components: the output format specification (ISO,Postgres,SQL,or German) and the input/output specification for year/month/day ordering (DMY,MDY,or YMD).

对我而言,这意味着必须通过一些实验找到符合他们需求的那个 – 但最好的方法是将其保留为默认值并始终使用明确的输入格式.其中两个是’YYYY-MM-DD’和’YYYYMMDD’.我更喜欢前者 – 甚至使用这个IRL;)

注意:postgresql.conf中的日期样式设置(以及其他运行时设置)可以被ALTER DATABASE bla SET datestyle …覆盖,为单个数据库永久设置,或者通过SET datestyle TO …将其设置为当前会话.当使用不同的日期格式导入某些第三方数据时,后者可能很有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读