Konvertierung von Datum mit 5-Stelliger Jahresangabe

Alle Fragen und Probleme zu den externen Schnittstellen wie ODBC, JDBC, ...
Antworten
Naidrok
Neuer Benutzer
Beiträge: 1
Registriert: Di 19. Aug 2014, 18:09

Konvertierung von Datum mit 5-Stelliger Jahresangabe

Beitrag von Naidrok » Di 19. Aug 2014, 18:47

Hallo,

ich möchte hier folgendes Problem beschreiben und evtl. um Abhilfe bitten, wenn es denn ein workaround dazu gibt.

Folgendes Scenario:
- in ein "date" Feld einer Tabelle wird auf mysteriöse Weise folgender Wert geschrieben "20144-07-22" (habe das geprüft und es geht problemlos mit pgadmin)
- in einer VB 6.0 Anwendung, die mit ODBC arbeitet, erscheint aber ein anderer Wert: "19.08.2014" oder in der anderen Schreibweise "2014-08-19".
- Umgebung besteht aus Postgresql 9.3.4 und PostgreSQL ANSI 9.03.02.10 (ODBC), Microsoft Dao 3.6

Ich habe Test mit verschiedenen Datumsangaben durchgeführt und es deutet alles darauf hin, dass bei 5-Stelligen Jahresangaben die letzte Zahl einfach abgeschnitten wird und der aktuelle Tag und Monat geliefert wird.
Dieses Datum würde sich jeden Tag ändern, was u.U. zu Problemen führen kann, wenn ein Konstantes Datum erwartet wird. Es war mir auch nicht möglich, irgendwelche Fehlermeldung in der Anwendung oder ODBC-Ablaufverfolgung festzustellen.
Im Recordset wird gleich das konvertierte Datum geliefert ohne das man es auf irgendeine Weise überprüfen könnte.

Weiß jemand, ob es eine Einstellung gibt, die es in solchen Fällen verhindert, dass "irgendein" Datum geliefert wird oder ist es ein Bug in den ODBC-Teibern?

Viele Grüße

P.S. weiteres Beispiel: aus "05.05.10000" wird "19.08.1000" wobei "05.05.9999" nicht umgewandelt wird.

akretschmer
Erfahrener Benutzer
Beiträge: 7429
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Konvertierung von Datum mit 5-Stelliger Jahresangabe

Beitrag von akretschmer » Di 19. Aug 2014, 19:33

Naidrok hat geschrieben:Hallo,

ich möchte hier folgendes Problem beschreiben und evtl. um Abhilfe bitten, wenn es denn ein workaround dazu gibt.

Folgendes Scenario:
- in ein "date" Feld einer Tabelle wird auf mysteriöse Weise folgender Wert geschrieben "20144-07-22" (habe das geprüft und es geht problemlos mit pgadmin)


Warum auch nicht, es ist ein valides Datum:

Code: Alles auswählen

test=*# select '20144-07-22'::date;
    date
-------------
 20144-07-22
(1 row)


- in einer VB 6.0 Anwendung, die mit ODBC arbeitet, erscheint aber ein anderer Wert: "19.08.2014" oder in der anderen Schreibweise "2014-08-19".


Ja was denn nun?

- Umgebung besteht aus Postgresql 9.3.4 und PostgreSQL ANSI 9.03.02.10 (ODBC), Microsoft Dao 3.6

Ich habe Test mit verschiedenen Datumsangaben durchgeführt und es deutet alles darauf hin, dass bei 5-Stelligen Jahresangaben die letzte Zahl einfach abgeschnitten wird und der aktuelle Tag und Monat geliefert wird.
Dieses Datum würde sich jeden Tag ändern, was u.U. zu Problemen führen kann, wenn ein Konstantes Datum erwartet wird. Es war mir auch nicht möglich, irgendwelche Fehlermeldung in der Anwendung oder ODBC-Ablaufverfolgung festzustellen.
Im Recordset wird gleich das konvertierte Datum geliefert ohne das man es auf irgendeine Weise überprüfen könnte.

Weiß jemand, ob es eine Einstellung gibt, die es in solchen Fällen verhindert, dass "irgendein" Datum geliefert wird oder ist es ein Bug in den ODBC-Teibern?


Ich kann es nicht nachvollziehen. Nutze aber auch kein ODBC oder so. Das kann also im ODBC-Treiber liegen oder in der Applikation. Du kannst einen Check-Constraint auf die Spalte setzen, daß das Datum nur in bestimmten Bereichen liegen darf. Das Jahr 20144 scheint ja für Dich nicht hinreichend relevant zu sein.

ulischerrer
Benutzer
Beiträge: 32
Registriert: Mi 22. Okt 2008, 15:20

Re: Konvertierung von Datum mit 5-Stelliger Jahresangabe

Beitrag von ulischerrer » Mi 20. Aug 2014, 10:17

Hallo Naidrock,

ich kann zwar keinen Lösungsansatz bieten, möchte aber das Verhalten bestätigen.

Bsp.: insert into tmp(datum) values('20144-07-22')
pgAdmin zeigt das Datum korrekt an, PostgreSQL macht also alles richtig.
Anzeige in MS Access über PostgreSQL ODBC Driver(ANSI) 8.04.02.00 zeigt bei mir 20.08.2014
Da "korrigiert" entweder der Treiber oder Access.
Im ODBC Datenquellen-Administrator gibts eine Ablaufverfolgung. Vielleicht hilft dir diese weiter.

Grüße
Uli

Antworten