CHARACTER VARYING列を日付にキャストしようとしていますが、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形式を取得するにはどうすればよいですか?
事前に感謝します!
トーマス
DATE
列には形式がありません。形式を指定することはできません。
DateStyle
を使用して、PostgreSQLが日付を出力する方法を制御できますが、グローバルで少し制限されています。
代わりに、to_char
を使用して、クエリの日付をフォーマットするか、クライアントアプリケーションで日付をフォーマットする必要があります。好む:
SELECT to_char("date", 'DD/MM/YYYY') FROM mytable;
例えば.
regress=> SELECT to_char(DATE '2014-04-01', 'DD/MM/YYYY');
to_char
------------
01/04/2014
(1 row)
https://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME-OUTPUT
日付/時刻型の出力形式は、ISO 8601、SQL(Ingres)、従来のPOSTGRES(Unix日付形式)、またはドイツ語の4つのスタイルのいずれかに設定できます。デフォルトは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)
Craigが答えで言及したように、datestyle
を変更すると、postgresが日付を解析する方法も(そして最初に)変更されることに注意してください。