sql >> Database teknologi >  >> RDS >> PostgreSQL

How to_date() virker i PostgreSQL

I PostgreSQL kan du bruge to_date() funktion til at konvertere en streng til en dato.

Syntaks

Syntaksen ser sådan ud:

to_date(text, text)

Hvor det første argument er en strengrepræsentation af datoen, og det andet argument definerer skabelonen, som det første argument bruger.

Eksempel

Her er et grundlæggende eksempel at demonstrere.

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

Resultat:

2010-02-10

Skabeloner

Det andet argument giver skabelonen, som det første argument er angivet i. Dette kaldes nogle gange som en "formatstreng".

Skabelonen består af et eller flere skabelonmønstre og eventuelt en eller flere skabelonmønstermodifikatorer.

Skabelonmønstre

Ved at bruge det forrige eksempel, DD er et skabelonmønster og Mon er et skabelonmønster. YYYY er også et skabelonmønster. Disse blev alle kombineret for at danne skabelonen.

Du kan flytte rundt på hvert skabelonmønster efter behov. Og du kan bruge forskellige skabelonmønstre helt.

Her er nogle flere eksempler, der bruger den samme dato, men i forskellige formater (og derfor bruger forskellige skabeloner).

\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 (ved hjælp af lodret output):

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 bruger alle den samme dato, men datoen leveres i forskellige formater. Det er skabelonens opgave eksplicit at angive over for Postgres, hvilket format datoen er angivet i.

Som du sikkert kan forestille dig, hvis vi ikke leverede skabelonen, kunne nogle datoer blive fortolket på den forkerte måde, især hvis datoen bruger en anden lokalitet til sit format.

For eksempel kan 01/03/2010 fortolkes som den første marts eller den tredje januar, afhængigt af lokaliteten.

Skabelonmønstermodifikatorer

Nogle gange skal du måske også tilføje en skabelonmønstermodifikator til skabelonen.

Hvis din dato f.eks. bruger et ordenstalssuffiks, skal du sikre dig, at det fortolkes som sådan.

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 (ved hjælp af lodret output):

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

Hvis jeg ikke havde brugt skabelonmønstermodifieren, ville jeg have modtaget en fejl, da jeg brugte disse datoer.

Her er et eksempel til illustration.

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.

Fuld liste over skabelonmønstre og modifikatorer

Postgres indeholder mange flere skabelonmønstre og modifikatorer.

Disse kan også bruges ved formatering af dato/tidsværdier (for eksempel ved brug af to_char() funktion til at konvertere et tidsstempel til en streng).

Se skabelonmønstre og modifikatorer for formatering af dato/klokkeslæt i PostgreSQL for en komplet liste.


  1. Hvordan bruger jeg password hashing med PDO for at gøre min kode mere sikker?

  2. Sådan udtrækkes dagen, måneden og året fra en dato i SQLite

  3. Er primære nøgler og indekser i Hive-forespørgselssprog mulig eller ej?

  4. xampp MySQL starter ikke