SQL erkennt nicht nur das ISO-Format, sondern ALLE gültigen Datumsformate mit einem 4-stelligen Jahr.

Bei dem folgenden Statement werden alle alphanumerischen Strings in ein gültiges Datum konvertiert.

PHP-Code:
Select Date('2007-10-29'), Date('29.10.2007'), Date('10/29/2007'), Date('2007302')
From SysIbm/SysDummy1 
Bei einem 2-stelligen Jahr ist es nicht möglich programmatisch festzustellen an welcher Position das Jahr steht. An dem Trennzeichen kann man sich nicht orientieren, da dies beliebig gewählt werden kann.

Bei embedded SQL sollte das Datums-Format über SET OPTION oder im Compile Command auf eins der 3 gültigen (ISO, USA, EUR) Datumsformate mit 4-stelligem Jahr gesetzt werden.

Der Grund hierfür liegt darin, dass der SQL-Precompiler für jede Hostvariable eine zusätzliche Variable definiert. Bei einem Datumsfeld erhält die Variable das Format, das im SET OPTION-Statement oder im Compile-Command angegeben wurde. Das Format der Host-Variable in den D- oder H-Bestimmungen wird nich berücksichtigt! Wird nun eine solche vom Precompiler definierte Variable mit einem 2-stelligen Datumsformat definiert, kann es bei der Übernahme aus der Host-Variable zu einem Feldüberlauf kommen. Dies passiert nicht, wenn das Datumsformst ein 4-stelliges Jahr hat.

Intern ist das Datum nicht ISO sondern als fortlaufender numerischer Binär-Wert (Scaliger Number) gespeichert.

Birgitta