[英]PostgreSQL : cast string to date DD/MM/YYYY
我正在嘗試將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
格式?
非常感謝!
托馬斯
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)
文檔說
日期/時間類型的輸出格式可以設置為 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)
請注意,正如@Craig 在他的回答中提到的那樣,更改datestyle
也將(並且首先)更改 postgres 解析日期的方式。
https://www.postgresql.org/docs/8.4/functions-formatting.html
SELECT to_char(date_field, 'DD/MM/YYYY')
FROM table
如果您需要將 select 語句的返回日期轉換為特定格式,您可以使用以下內容:
select to_char(DATE (*date_you_want_to_select*)::date, 'DD/MM/YYYY') as "Formated Date"
取決於您需要作為輸出的類型,但這里有 2 個基於間隔的快速示例:
SELECT (now() - interval '15 DAY')::date AS order_date
-> 2021-07-29
SELECT to_char(now() - interval '15 DAY', 'YYYY-MM-DD')
-> 2021-07-29
假設您的日期列是order_date
:
SELECT (
RIGHT(order_date, 4)
|| '-'
|| SUBSTRING(order_date, 4, 2)
|| '-'
|| LEFT(order_date, 2)
)::DATE
FROM test
或者
SELECT CAST(
RIGHT(order_date, 4)
|| '-'
|| SUBSTRING(order_date, 4, 2)
|| '-'
|| LEFT(order_date, 2)
AS DATE )
FROM test
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.