SET datestyle = "ISO, MDY";
每次尝试访问它时,都将其保留?
我使用的是Postgresql版本9.1,Ubuntu 12.04。
我的系统语言环境在数据库安装时设置为
en_CA.utf8
,而我最近将其更改为en_US.utf8
。 /> 返回:->
"en_CA.UTF-8"
但是
show lc_CTYPE
返回:->
"en_CA.UTF-8"
#1 楼
几年前,我曾经遇到过一个非常类似的问题,然后发现我可以做到ALTER DATABASE database_name SET datestyle TO "ISO, MDY";
尝试一下。 (这适用于每个数据库,对于所有数据库的解决方案,请在您的
postgresql.conf
中设置此参数-感谢@a_horse_with_no_name。)请注意,默认设置与语言环境无关。但是,在将
initdb
设置为所需的值后,您可以在postgresql.conf
中进行更改。 /> 设置
datestyle
会产生以下效果:test=# SHOW lc_ctype;
lc_ctype
--------------------
Hungarian, Hungary
(1 row)
test=# SHOW lc_time;
lc_time
--------------------
Hungarian, Hungary
(1 row)
现在这并不是真正希望的-在具有
en_US.UTF8
的其他服务器上也是如此。尝试"ISO, DMY"
,也暗示我在产生输出时"ISO"
部分或多或少会覆盖其他部分。对于输入值,它具有预期的效果,如下表所示:SET datestyle TO "ISO, MDY";
SELECT current_date;
date
------------
2012-06-21
(1 row)
datestyle
设置。仔细阅读文档后,可以看到
datestyle
是一对部分冲突的设置:由于历史原因,此变量包含两个独立的组件:输出格式规范(ISO,Postgres,SQL或德语)和用于年/月/日订购的输入/输出规范(DMY,MDY或YMD)。
对我来说,这意味着必须通过一些实验来找到适合自己需求的方法-但最好的方法是将其保留为默认值,并始终使用明确的输入格式。其中两个是
'YYYY-MM-DD'
和'YYYYMMDD'
。我更喜欢前者-甚至使用此IRL;)注意:
datestyle
的postgresql.conf
设置(和其他运行时设置)可以被ALTER DATABASE bla SET datestyle ...
覆盖,为单个数据库永久设置,或由SET datestyle TO ...
为当前会话设置。当导入具有不同日期格式的某些第三方数据时,后者可能很有用。#2 楼
谢谢@a_horse_with_no_name | @dezso | @ypercubeᵀᴹ我想写一个易于实现的答案:步骤
方法1:仅针对每个数据库设置datestyle
show datestyle;
向您显示当前日期样式“ ISO,DMY”或“ ISO,MDY”查询ALTER DATABASE "my_database_name" SET datestyle TO "ISO, DMY";
或
ALTER DATABASE "my_database_name" SET datestyle TO "ISO, MDY";
最重要的步骤:始终在设置日期样式后重新启动postgres
sudo service postgresql restart
或
sudo /etc/init.d/postgresql restart
让测试配置
如果您已在下面的查询中设置了DMY,则应该对您有用。
查询:
select '20/12/2016'::date
输出:"2016-12-20"
为您工作
查询:
select '12/19/2016'::date
输出:"2016-12-19"
方法2:永久:在配置文件中设置的内容将在所有数据库中设置您将在将来创建
在/etc/postgresql/9.3中/main/postgresql.conf设置
datestyle = 'iso, dmy'
或datestyle = 'iso, mdy'
最重要的步骤:始终在设置日期样式后重新启动postgres
br />
或
sudo service postgresql restart
让测试配置
如果您在下面设置了DMY,则查询应适用您
查询:
sudo /etc/init.d/postgresql restart
输出:select '20/12/2016'::date
或
如果您在以下查询中设置了MDY,那么它应该对您有用
查询:
"2016-12-20"
输出:select '12/19/2016'::date