如何设置Postgresql数据库永久查看日期为“MDY”
如何设置我的数据库以在不运行的情况下将“日期”视为“MDY”:
SET datestyle = "ISO,MDY"; 我每次都试图访问它? 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是一对部分冲突的设置:
对我而言,这意味着必须通过一些实验找到符合他们需求的那个 – 但最好的方法是将其保留为默认值并始终使用明确的输入格式.其中两个是’YYYY-MM-DD’和’YYYYMMDD’.我更喜欢前者 – 甚至使用这个IRL;) 注意:postgresql.conf中的日期样式设置(以及其他运行时设置)可以被ALTER DATABASE bla SET datestyle …覆盖,为单个数据库永久设置,或者通过SET datestyle TO …将其设置为当前会话.当使用不同的日期格式导入某些第三方数据时,后者可能很有用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |