如何将 postgres 中的日期类型设置为 DD/MM/YYYY 格式

Posted

技术标签:

【中文标题】如何将 postgres 中的日期类型设置为 DD/MM/YYYY 格式【英文标题】:How to set date type in postgres to the DD/MM/YYYY Format 【发布时间】:2021-08-17 03:41:23 【问题描述】:

我正在 Postgres 中创建一些带有日期列的表,例如出生日期。例如,当我输入值为 19-09-2021 时,我收到错误 ERROR: date/time field value out of range: "19-09-2021"

这表明默认格式为 YYYY/MM/DD。如何将格式更改为 DD/MM/YYYY 以接受相似的值。

【问题讨论】:

与您的问题无关,但是:Postgres 9.4 和 9.4 是 no longer supported 您应该尽快计划升级。 【参考方案1】:

Postgres(或真正的any SQL 数据库中的日期)没有内部格式,而是以二进制形式存储。您应该在针对真实日期列的 SQL 查询中使用有效的日期文字,例如

SELECT *
FROM yourTable
WHERE date_col = '2021-09-19'::date;

如果您想以某种方式查看您的日期列,请使用 Postgres 的 TO_CHAR 函数:

SELECT date_col, TO_CHAR(date_col, 'DD/MM/YYYY') AS date_col_text
FROM yourTable;

【讨论】:

将日期类型存储为 DATE 是否正确?即create table profiles ( birth_date Date); @Wacademy 是的,除非你没有提到任何其他问题,否则应该没问题。【参考方案2】:

你应该检查datestyle设置:

postgres=# show datestyle ;
┌───────────┐
│ DateStyle │
╞═══════════╡
│ ISO, DMY  │
└───────────┘
(1 row)

虽然我在生活中使用德国风格,但我同意意见所以输入,那么最好是ISO风格,应该首选这种风格,因为它不会模棱两可,Postgres接受这种风格(以及几乎所有其他数据库)任何设置:

postgres=# set datestyle to US;
SET
postgres=# select '20210817'::date;
┌────────────┐
│    date    │
╞════════════╡
│ 2021-08-17 │
└────────────┘
(1 row)

postgres=# select '17-08-2021'::date;
ERROR:  date/time field value out of range: "17-08-2021"
LINE 1: select '17-08-2021'::date;
               ^
HINT:  Perhaps you need a different "datestyle" setting.
postgres=# set datestyle to german ;
SET
postgres=# select '17-08-2021'::date;
┌────────────┐
│    date    │
╞════════════╡
│ 17.08.2021 │
└────────────┘
(1 row)

postgres=# select '17/08/2021'::date;
┌────────────┐
│    date    │
╞════════════╡
│ 17.08.2021 │
└────────────┘
(1 row)

【讨论】:

【参考方案3】:

如果你不使用SQL Shell

您可以从这里查看您的日期样式C:\Program Files\PostgreSQL\Your Server(like mine 13)\data

之后打开这个文件 -> postgresql.conf

找到日期样式选项,如下所示 -> datestyle = 'iso, mdy'

您可以在此处根据您的日期样式更改默认日期样式设置,也可以使用默认日期样式。

【讨论】:

show datestyle; 独立于所使用的 SQL 客户端。没有必要为此查阅配置文件。 @a_horse_with_no_name 我知道,但如果你想根据你的日期风格使用,那么你必须这样做。其他明智的选择默认使用。 我认为这不太理想

以上是关于如何将 postgres 中的日期类型设置为 DD/MM/YYYY 格式的主要内容,如果未能解决你的问题,请参考以下文章

PowerBI - 将 DatePicker 切片器中的日期格式设置为 dd/mm/yyyy

SQL SERVER中日期的显示格式为YYYY-MM-DD,怎样设置为MM/DD/YYYY呢?

请问在excel中如何把数值YYYYMMDD转换为日期YYYY-MM-DD呢?如果直接设置单元格格式为日期,只能显示一连串

当日期为空时,如何在日期输入字段中显示设置为“mm/dd/yyyy”而不是“1/1/0001”的占位符?

如何将JAVA DATE类型的日期 转换成指定格式类型的 (如:YYYY-MM-DD) 的 DATE类型数据?

怎么将excel的日期格式YYYYMMDD转换为YYYY-MM-DD