簡體   English   中英

PostgreSQL:將字符串轉換為日期 DD/MM/YYYY

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM