PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come convertire le stringhe di data in timestamp senza conoscere il formato della data

Devi impostare il tuo stile di data su "ISO, DMY". È impostato su "ISO, MDY" per impostazione predefinita e causerebbe il fallimento del tuo esempio:

> show datestyle;

 DateStyle 
-----------
 ISO, MDY
(1 row)

> select '28-Sep-13'::date;
    date    
------------
 2013-09-28
(1 row)

> select '28/09/2013'::date;
ERROR:  date/time field value out of range: "28/09/2013"
LINE 1: select '28/09/2013'::date;
               ^
HINT:  Perhaps you need a different "datestyle" setting.

> set datestyle = 'ISO, DMY';
SET

> select '28-Sep-13'::date;
    date    
------------
 2013-09-28
(1 row)

> select '28/09/2013'::date;
    date    
------------
 2013-09-28
(1 row)

(esempi eseguiti in PostgreSQL 9.1, ma l'impostazione DateStyle e il comportamento associato sono antichi, quindi dovrebbe funzionare bene)