如何更改 PostgreSQL 中的日期样式?
Posted
技术标签:
【中文标题】如何更改 PostgreSQL 中的日期样式?【英文标题】:How to change datestyle in PostgreSQL? 【发布时间】:2012-11-06 04:35:26 【问题描述】:在 postgres 中,我有一个带有日期列的表。现在 postgres 允许我以 Y-m-d 格式写日期。但我需要 d/m/Y 格式的日期。如何改变它?
当我这样做时:
show datestyle;
我明白了:
"ISO, DMY"
并以13/02/2009
这种格式在表格中输入日期
但是当我再次关闭并打开表时,我看到了这个2009-02-13
。 JDBC 也以这种格式给我日期。我做错了什么?
【问题讨论】:
我建议您使用 ISO 8601 格式与您的数据库通信,并将格式问题留给不同的层。 @muistooshort 绝对。在编辑之前,这个问题似乎是“我如何使用 to_char 格式化日期”的乱码版本......但如果它谈论的是日期 I/O,那么绝对要坚持良好的理智日期 ISO 日期,并使用 @ 987654325@ 和to_timestamp
与客户交谈需要其他格式。
【参考方案1】:
你也可以使用命令
set datestyle to [your new datestyle];
在 postgreSQL 的控制台中。
【讨论】:
这只是每个会话的更改。【参考方案2】:yyyy-mm-dd 是日期字段的推荐格式,它是 ISO 8601 格式。
您可以更改 postgresql.conf 文件中的格式。
document 状态
用户可以使用 SET 选择日期/时间样式 datestyle 命令,postgresql.conf 中的 DateStyle 参数 配置文件,或 PGDAESTYLE 环境变量 服务器或客户端。格式化函数 to_char 是 也可作为更灵活的方式来格式化日期/时间输出。
希望这会有所帮助!
【讨论】:
您尝试修改环境变量PGDATESTYLE
吗?
在postgresql.conf
中,我将样式更改为datestyle = 'sql, dmy'
,但什么也没发生。
我可以想到以下几种可能性。编辑 postgresql.conf 后服务器未重新启动。也许,如果可能的话,使用 alter database 语句为正确的数据库(不是集群)设置日期样式最后一小部分,如果您还没有这样做,请尝试以 psql
执行查询【参考方案3】:
将to_char 函数与您的日期一起使用,如下所示:
select to_char(date_column1, 'Mon/DD/YYYY');
【讨论】:
Okey 其作品。但是我的选择中有大量列,现在我不能使用 * 来选择所有列。是否可以在 postgres 中更改日期样式而不是在查询中? @KliverMax 不,postgres 按原样存储日期,但在检索时会格式化。【参考方案4】:如果可能,请不要使用DATESTYLE
。它会影响会话中的所有代码,包括可能不期望它的存储过程之类的东西,并且可能没有在其定义中设置显式覆盖 DATESTYLE
。
如果可以,请使用to_char
进行日期输出,并在需要使用任何可能不明确的日期格式(例如D/M/Y
)时使用to_timestamp
进行日期输入。其余时间使用 ISO 日期。
【讨论】:
以上是关于如何更改 PostgreSQL 中的日期样式?的主要内容,如果未能解决你的问题,请参考以下文章
无论如何要更改日期输入字段中年、月和日分隔符 (/) 的占位符样式?