【问题标题】:How to set date type in postgres to the DD/MM/YYYY Format如何将 postgres 中的日期类型设置为 DD/MM/YYYY 格式
【发布时间】: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 您应该尽快计划升级。

标签: sql postgresql postgresql-9.4 postgresql-9.5


【解决方案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 我知道,但如果你想根据你的日期风格使用,那么你必须这样做。其他明智的选择默认使用。
    • 我认为这不太理想
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 2020-10-29
    • 2013-11-01
    相关资源
    最近更新 更多