sql >> Databasteknik >  >> RDS >> PostgreSQL

How to_date() Fungerar i PostgreSQL

I PostgreSQL kan du använda to_date() funktion för att konvertera en sträng till ett datum.

Syntax

Syntaxen ser ut så här:

to_date(text, text)

Där det första argumentet är en strängrepresentation av datumet och det andra argumentet definierar mallen som det första argumentet använder.

Exempel

Här är ett grundläggande exempel att visa.

SELECT to_date('10 Feb 2010', 'DD Mon YYYY');

Resultat:

2010-02-10

Mallar

Det andra argumentet tillhandahåller mallen som det första argumentet tillhandahålls i. Detta kallas ibland för en "formatsträng".

Mallen består av ett eller flera mallmönster och valfritt en eller flera mallmönstermodifierare.

Mallmönster

Med hjälp av föregående exempel, DD är ett mallmönster och Mon är ett mallmönster. YYYY är också ett mallmönster. Dessa kombinerades alla för att bilda mallen.

Du kan flytta runt varje mallmönster efter behov. Och du kan använda olika mallmönster helt och hållet.

Här är några fler exempel som använder samma datum, men i olika format (och därför med olika mallar).

\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";

Resultat (med vertikal utdata):

DD Mon YYYY | 2010-02-10
Mon DD YYYY | 2010-02-10
DD/MM/YYYY  | 2010-02-10
MM/DD/YYYY  | 2010-02-10
MM-DD-YYYY  | 2010-02-10
MMDDYYYY    | 2010-02-10
MM-DD-YY    | 2010-02-10

Så de använder alla samma datum, men datumet tillhandahålls i olika format. Det är mallens uppgift att uttryckligen ange för Postgres vilket format datumet har angetts i.

Som du förmodligen kan föreställa dig, om vi inte tillhandahåller mallen, kan vissa datum tolkas på fel sätt, särskilt om datumet använder en annan lokalitet för sitt format.

Till exempel kan 01/03/2010 tolkas som den första mars eller den tredje januari, beroende på språket.

Mallmönstermodifierare

Ibland kan du också behöva lägga till en mallmönstermodifierare till mallen.

Om ditt datum till exempel använder ett ordningstalssuffix måste du se till att det tolkas som det.

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";

Resultat (med vertikal utdata):

10th Feb 2010 | 2010-02-10
01st Feb 2010 | 2010-02-01
03rd Feb 2010 | 2010-02-03

Om jag inte hade använt mallmönstermodifieraren skulle jag ha fått ett felmeddelande när jag använde dessa datum.

Här är ett exempel för att illustrera.

SELECT to_date('10th Feb 2010', 'DD Mon YYYY');

Resultat:

ERROR: invalid value "th" for "Mon"
DETAIL: The given value did not match any of the allowed values for this field.

Fullständig lista över mallmönster och modifierare

Postgres innehåller många fler mallmönster och modifierare.

Dessa kan också användas vid formatering av datum/tidsvärden (till exempel när du använder to_char() funktion för att konvertera en tidsstämpel till en sträng).

Se mallmönster och modifierare för formatering av datum/tid i PostgreSQL för en fullständig lista.


  1. Uppdatera en kolumn i en tabell med en kolumn i en annan tabell i PostgreSQL

  2. Hur gör jag en bulkinfogning i mySQL med node.js

  3. MySQL – Anslutningsfel – [MySQL][ODBC 5.3(w)-drivrutin] Värd 'IP' får inte ansluta till denna MySQL-server

  4. Ställa in Oracle-språkparametrar för DG4ODBC