如何更改 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 中的日期样式?的主要内容,如果未能解决你的问题,请参考以下文章

对话框中的材料 UI 更改日期字段样式

如何比较 Postgresql 中日期时间字段中的日期?

无论如何要更改日期输入字段中年、月和日分隔符 (/) 的占位符样式?

如何覆盖日期选择器的 iOS 暗模式样式

如何使用 laravel 更新 postgresql 数据库中的 json 数据?

如何将 bigint 字段格式化为 Postgresql 中的日期?