我试图将CHARACTER VARYING列投射到DATE但我需要这样的日期格式:DD / MM / YYYY。我使用以下SQL:
ALTER TABLE test ALTER COLUMN date TYPE DATE using to_date(date, 'DD/MM/YYYY');
结果是这样的日期:YYYY-MM-DD。
如何获取DD / MM / YYYY格式?
提前多多感谢!
托马斯
答案 0 :(得分:61)
DATE
列没有格式。您无法为其指定格式。
您可以使用DateStyle
来控制PostgreSQL发布日期的方式,但它是全局的,有点受限制。
相反,您应该使用to_char
格式化查询日期,或在客户端应用程序中格式化日期。像:
SELECT to_char("date", 'DD/MM/YYYY') FROM mytable;
e.g。
regress=> SELECT to_char(DATE '2014-04-01', 'DD/MM/YYYY');
to_char
------------
01/04/2014
(1 row)
答案 1 :(得分:4)
https://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME-OUTPUT
日期/时间类型的输出格式可以设置为四种中的一种 样式ISO 8601,SQL(Ingres),传统POSTGRES(Unix日期 格式),或德语。默认为ISO格式。
因此可以使用postgres日期时间输出控制此特定格式,例如:
t=# select now();
now
-------------------------------
2017-11-29 09:15:25.348342+00
(1 row)
t=# set datestyle to DMY, SQL;
SET
t=# select now();
now
-------------------------------
29/11/2017 09:15:31.28477 UTC
(1 row)
t=# select now()::date;
now
------------
29/11/2017
(1 row)
请注意,正如克雷格在答案中提到的那样,改变datestyle
也将(并在第一回合)改变postgres解析日期的方式。
答案 2 :(得分:0)
https://www.postgresql.org/docs/8.4/functions-formatting.html
SELECT to_char(date_field, 'DD/MM/YYYY')
FROM table
答案 3 :(得分:0)
如果您需要将 select 语句的返回日期转换为特定格式,您可以使用以下内容:
select to_char(DATE (*date_you_want_to_select*)::date, 'DD/MM/YYYY') as "Formated Date"