PostgreSQL: chaîne de coulée à date JJ / MM/AAAA

j'essaie de lancer une colonne de caractères à une DATE mais j'ai besoin d'un format de date comme ceci : JJ/MM/AAAA. J'utilise le SQL suivant:

ALTER TABLE test ALTER COLUMN date TYPE DATE using to_date(date, 'DD/MM/YYYY');

le résultat est une date comme celle-ci: AAAA-MM-JJ.

Comment puis-je obtenir le format JJ/MM/AAAA ?

Merci beaucoup d'avance !

Thomas

22
demandé sur rubik 2014-06-19 12:23:29

2 réponses

DATE la colonne n'a pas de format. Vous ne pouvez pas spécifier un format pour.

Vous pouvez utiliser DateStyle pour contrôler comment PostgreSQL émet les dates, mais c'est global et un peu limité.

a la place, vous devriez utiliser to_char pour formater la date lorsque vous l'interrogez, ou le formater dans l'application client. Comme:

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)
48
répondu Craig Ringer 2014-06-19 08:33:30

https://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME-OUTPUT

Le format de sortie des types date/heure peut être réglée sur l'une des quatre styles ISO 8601, SQL (Ingres), POSTGRES traditionnels (Unix date format), ou en allemand. La valeur par défaut est le format ISO.

ainsi ce format particulier peut être contrôlé avec postgres Date time output, par exemple:

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)