TO__DATE-Funktion zwischen PostgreSQL 8.2 und 8.3

TO_DATE-Funktion zwischen PostgreSQL 8.2 und 8.3

Wie wir alle wissen, überprüft PostgreSQL 8.3 den Datentyp sehr stark. Nach der Migration von PostgreSQL8.x zu PostgreSQL8.3 treten bei vielen Anwendungen viele Datentypfehler auf. Meistens liegt dies an der Datentypprüfung.

Einer der häufigsten Fehler ist die Funktion to_date (). Es werden zwei Texte als Parameter akzeptiert.

to_date(text,text)

Ok, jetzt erstelle ich eine Tabelle wie folgt. Ein einfacher Tabellenaufruf n_url_test enthält ein Erstellungsdatum als Zeitstempeldatentyp.

CREATE TABLE n_url_test
(
  urltestid bigserial NOT NULL,
  createddate timestamp without time zone DEFAULT now(),
  CONSTRAINT n_url_to_test_pkey PRIMARY KEY (urltestid)
)

Ich führe SQL in PostgreSQL8.2 aus und es gibt mein erwartetes Ergebnis als "JJJJ-MM-TT" -Format zurück.

--PostgreSQL 8.2
---------------
select  to_date(createddate,'YYYY-MM-DD') from n_url_test;

Nachdem ich jedoch auf PostgreSQL8.3 migriert war, traf ich den folgenden Fehler

--PostgreSQL 8.3
---------------
select  to_date(createddate,'YYYY-MM-DD') from n_url_test;

--------------------------------------------------------------------------------
ERROR:  function to_date(timestamp without time zone, unknown) does not exist
LINE 1: select  to_date(createddate,'YYYY-MM-DD') from n_url_test
                ^
HINT:  No function matches the given name and argument types.
You might need to add explicit type casts.

********** Error **********

PostgreSQL 8.3 konvertiert für uns nicht automatisch vom Zeitstempel in Text wie in der vorherigen Version. Wir müssen die erstellten Datumsangaben wie folgt explizit eingeben

--PostgreSQL 8.3
---------------
select  to_date(createddate::text,'YYYY-MM-DD') from n_url_test;

Wenn Sie::text an das Erstellungsdatum anhängen, wird der Datentyp explizit als Text konvertiert. Es funktioniert. PostgreSQL8.3 strictly checking on data type is good function , but please do not forget there still have a lot people using previous version. Es verursacht ein großes Problem, wenn die Anwendung auf der Basis des Ignorierens der Datentypprüfung basiert, wie oben erwähnt.