wil*_*map 35 string postgresql casting date
我正在尝试将一个CHARACTER VARYING列转换为DATE,但我需要一个这样的日期格式:DD/MM/YYYY.我使用以下SQL:
ALTER TABLE test
ALTER COLUMN date TYPE DATE using to_date(date, 'DD/MM/YYYY');
Run Code Online (Sandbox Code Playgroud)
结果是这样的日期:YYYY-MM-DD.
如何获得DD/MM/YYYY格式?
非常感谢提前!
托马斯
Cra*_*ger 69
一DATE
列没有的格式.您无法为其指定格式.
您可以使用它DateStyle
来控制PostgreSQL如何发布日期,但它是全局的并且有点受限.
相反,您应该to_char
在查询日期时使用格式化日期,或者在客户端应用程序中对日期进行格式化.喜欢:
SELECT to_char("date", 'DD/MM/YYYY') FROM mytable;
Run Code Online (Sandbox Code Playgroud)
例如
regress=> SELECT to_char(DATE '2014-04-01', 'DD/MM/YYYY');
to_char
------------
01/04/2014
(1 row)
Run Code Online (Sandbox Code Playgroud)
https://www.postgresql.org/docs/8.4/functions-formatting.html
SELECT to_char(date_field, 'DD/MM/YYYY')
FROM table
Run Code Online (Sandbox Code Playgroud)
该文件说
日期/时间类型的输出格式可以设置为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)
Run Code Online (Sandbox Code Playgroud)
请记住,正如@Craig在其回答中提到的那样,更改datestyle
也会(并且在第一轮中)更改postgres解析日期的方式。