sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man konverterar datumsträngar till tidsstämpel utan att veta datumformatet

Du måste ställa in din datumstil till "ISO, DMY". Den är inställd på "ISO, MDY" som standard och skulle få ditt exempel att misslyckas:

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

(exempel gjorda i PostgreSQL 9.1, men DateStyle-inställningen och tillhörande beteende är uråldriga, så borde fungera bra)



  1. Programmeringsfel:SQLite-objekt skapade i en tråd kan bara användas i samma tråd

  2. Yii2:Kartik Gridview summan av en kolumn i sidfot

  3. Oracle infoga i retur

  4. Vilka är fördelarna med att använda en en-till-en-tabellrelation? (MySQL)