PostgreSQL:将字符串转换为日期DD / MM / YYYY

时间:2014-06-19 08:23:29

标签: string postgresql date casting

我试图将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格式?

提前多多感谢!

托马斯

4 个答案:

答案 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"