PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment convertir des chaînes de date en horodatage sans connaître le format de date

Vous devez définir votre style de date sur "ISO, DMY". Il est défini sur "ISO, MDY" par défaut et entraînerait l'échec de votre exemple :

> 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)

(exemples réalisés dans PostgreSQL 9.1, mais le paramètre DateStyle et le comportement associé sont anciens, donc devraient fonctionner correctement)