PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So konvertieren Sie eine Zeichenfolge in ein Datum in PostgreSQL

Problem:

Sie möchten einen String, der ein Datum enthält, in das PostgreSQL-Datum umwandeln Datentyp.

Konvertieren wir eine Datumszeichenfolge in das Datum Datentyp anstelle seines aktuellen Texts Datentyp.

Lösung:

Hier ist Beispiel 1 zur Verwendung von TO_DATE() Funktion. Dies ist die Abfrage, die Sie schreiben würden:

SELECT TO_DATE('20020304', 'YYYYMMDD') AS  new_date;

Und hier ist das Ergebnis der Abfrage:

new_date
2002-03-04

Schauen wir uns Beispiel 2 des TO_DATE() an Funktion. Beachten Sie das etwas andere Datumsformat:

SELECT TO_DATE('2015/06/07', 'YYYY/MM/DD') AS  new_date;

Hier ist das Ergebnis der Abfrage:

new_date
2015-06-07

Diskussion:

Verwenden Sie die Funktion TO_DATE() um einen Textwert, der ein Datum enthält, in das Datum umzuwandeln Datentyp. Diese Funktion akzeptiert zwei Argumente:

  1. Ein Datumswert. Dies kann eine Zeichenfolge (ein Textwert) oder eine Textspalte mit Datumsinformationen sein. In unserem Beispiel haben wir die Zeichenfolgen '20020304' verwendet und '2015/06/07' .
  2. Das Eingabedatumsformat. In unserem Beispiel haben wir 'YYYYMMDD' verwendet und 'YYYY/MM/DD' . Beachten Sie, dass das Eingabeformat ein String ist.

Das Eingabeformat entscheidet, wie PostgreSQL die Zeichen in der Zeichenfolge verarbeitet, in der das Datum gespeichert ist. Der Bezeichner „YYYY“ als erste vier Zeichen zeigt an, dass diese eine 4-stellige Jahreszahl darstellen. Als nächstes steht „MM“ für einen zweistelligen Monat und „TT“ für einen zweistelligen Tag. Eine Liste aller Spezifizierer finden Sie in der PostgreSQL-Dokumentation.

In Beispiel 1 das String-Datum als „20020304 “ wurde in das Datum umgewandelt '2002-03-04' (ein Datum Datentyp. In Beispiel 2 die Zeichenfolge '2015/06/07' wurde in das Datum umgewandelt '2015-06-07' . Im zweiten Beispiel haben wir den Schrägstrich / verwendet zwischen Datumsteilen, um korrekt von einem String in das Datum zu konvertieren Datentyp.