sql >> Databáze >  >> RDS >> PostgreSQL

Jak to_date() funguje v PostgreSQL

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.


  1. T-SQL Úterý #33:Trikové záběry:Schéma Switch-A-Roo

  2. Co je @@MAX_PRECISION na serveru SQL Server?

  3. localhost vs. 127.0.0.1 v mysql_connect()

  4. Růst velikosti databáze SQL Server pomocí historie zálohování