V PostgreSQL můžete použít to_date()
funkce pro převod řetězce na datum.
Syntaxe
Syntaxe vypadá takto:
to_date(text, text)
Kde první argument je řetězcová reprezentace data a druhý argument definuje šablonu, kterou první argument používá.
Příklad
Zde je základní příklad k demonstraci.
SELECT to_date('10 Feb 2010', 'DD Mon YYYY');
Výsledek:
2010-02-10
Šablony
Druhý argument poskytuje šablonu, ve které je uveden první argument. Někdy se tomu říká „formátový řetězec“.
Šablona se skládá z jednoho nebo více vzorů šablony a volitelně jednoho nebo více modifikátorů vzoru šablony.
Vzory šablon
Pomocí předchozího příkladu DD
je vzor šablony a Mon
je vzor šablony. YYYY
je také vzorem šablony. Všechny byly zkombinovány a vytvořily šablonu.
Každý vzor šablony můžete podle potřeby přesouvat. A můžete použít různé vzory šablon dohromady.
Zde je několik dalších příkladů, které používají stejné datum, ale v různých formátech (a proto používají různé šablony).
\x
SELECT
to_date('10 Feb 2010', 'DD Mon YYYY') AS "DD Mon YYYY",
to_date('Feb 10 2010', 'Mon DD YYYY') AS "Mon DD YYYY",
to_date('10/02/2010', 'DD/MM/YYYY') AS "DD/MM/YYYY",
to_date('02/10/2010', 'MM/DD/YYYY') AS "MM/DD/YYYY",
to_date('02-10-2010', 'MM-DD-YYYY') AS "MM-DD-YYYY",
to_date('02102010', 'MMDDYYYY') AS "MMDDYYYY",
to_date('02-10-10', 'MM-DD-YY') AS "MM-DD-YY";
Výsledek (při použití vertikálního výstupu):
DD Po YYYY | 2010-02-10 Po DD YYYY | 2010-02-10DD/MM/RRRR | 2010-02-10MM/DD/RRRR | 2010-02-10MM-DD-RRRR | 2010-02-10MMDDRRRR | 2010-02-10MM-DD-RR | 2010-02-10
Všechny tedy používají stejné datum, ale datum je uvedeno v různých formátech. Úkolem šablony je explicitně určit Postgresu, v jakém formátu bylo datum poskytnuto.
Jak si pravděpodobně dokážete představit, pokud bychom šablonu neposkytli, některá data by mohla být interpretována nesprávně, zvláště pokud datum používá pro svůj formát jiné národní prostředí.
Například 01/03/2010 lze interpretovat jako prvního března nebo třetího ledna v závislosti na lokalitě.
Modifikátory vzoru šablon
Někdy může být také potřeba přidat do šablony modifikátor vzoru šablony.
Pokud například vaše datum používá příponu řadové číslovky, musíte zajistit, aby byla takto interpretována.
SELECT
to_date('10th Feb 2010', 'DDth Mon YYYY') AS "10th Feb 2010",
to_date('01st Feb 2010', 'DDth Mon YYYY') AS "01st Feb 2010",
to_date('03rd Feb 2010', 'DDth Mon YYYY') AS "03rd Feb 2010";
Výsledek (při použití vertikálního výstupu):
Pokud bych nepoužil modifikátor vzoru šablony, obdržel bych při použití těchto dat chybu.
Zde je příklad pro ilustraci.
SELECT to_date('10th Feb 2010', 'DD Mon YYYY');
Výsledek:
CHYBA:neplatná hodnota "th" pro "Po"DETAIL:Zadaná hodnota neodpovídá žádné z povolených hodnot pro toto pole.
Úplný seznam vzorů a modifikátorů šablon
Postgres obsahuje mnohem více šablon šablon a modifikátorů.
Lze je také použít při formátování hodnot data/času (například při použití to_char()
funkce pro převod časového razítka na řetězec).
Úplný seznam najdete v části Vzory a modifikátory šablon pro formátování data/času v PostgreSQL.