Problém:
Chcete převést řetězec obsahující datum na PostgreSQL date datový typ.
Převedeme řetězec data na datum datový typ namísto jeho aktuálního textu datový typ.
Řešení:
Zde je příklad 1, jak použít TO_DATE()
funkce. Toto je dotaz, který byste napsali:
SELECT TO_DATE('20020304', 'YYYYMMDD') AS new_date;
A zde je výsledek dotazu:
new_date |
---|
2002-03-04 |
Podívejme se na příklad 2 TO_DATE()
funkce. Všimněte si mírně odlišného formátu data:
SELECT TO_DATE('2015/06/07', 'YYYY/MM/DD') AS new_date;
Zde je výsledek dotazu:
new_date |
---|
2015-06-07 |
Diskuse:
Použijte funkci TO_DATE()
pro převod textové hodnoty obsahující datum na datum datový typ. Tato funkce má dva argumenty:
- Hodnota data. Může to být řetězec (textová hodnota) nebo textový sloupec obsahující informace o datu. V našem příkladu jsme použili řetězce
'20020304'
a'2015/06/07'
. - Formát vstupního data. V našem příkladu jsme použili
'YYYYMMDD'
a'YYYY/MM/DD'
. Všimněte si, že vstupní formát je řetězec.
Vstupní formát rozhoduje o tom, jak PostgreSQL zpracuje znaky v řetězci, kde je uloženo datum. Specifikátor „YYYY“ jako první čtyři znaky znamená, že představují 4místný rok. Dále „MM“ představuje 2místný měsíc a „DD“ 2místný den. Seznam všech specifikátorů najdete v dokumentaci PostgreSQL.
V příkladu 1 je datum řetězce „20020304
“ bylo převedeno na datum '2002-03-04'
(datum datový typ. V příkladu 2 řetězec '2015/06/07'
byl převeden na datum '2015-06-07'
. Ve druhém příkladu jsme použili lomítko /
mezi částmi data, aby se správně převedl z řetězce na datum datový typ.