如何将 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”的占位符?