sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo convertir cadenas de fecha a marca de tiempo sin conocer el formato de fecha

Debe configurar su estilo de fecha en "ISO, DMY". Está configurado en "ISO, MDY" de forma predeterminada y haría que su ejemplo fallara:

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

(ejemplos realizados en PostgreSQL 9.1, pero la configuración de DateStyle y el comportamiento asociado son antiguos, por lo que deberían funcionar bien)