Zitat Zitat von Fuerchau
Tja, da müsste man den genauen Wert, der geschrieben wird erfahren.
In der ODBC-Konfig kann das Datumsformat und die Trennzeichen eingestellt werden. Vielleicht schreibt das Programm ja andere Formate ?
Standardmässig werden die ISO-Formate verwendet und erkannt:

"YYYY-MM-DD-HH.MM.SS.MMMMMM"
Wir haben folgenden SQL-Befehl auf dem Server mal näher analysiert:

SELECT
ABFZAEHL,VORGANGSNR,MATCHCODE,USERID,ABFID,MDKZ,AB FSTART,STAT
CONCAT '!' as STATUS,SCHUFAKL,NAME,VORNAME,ANREDEKZ,GEBDAT,
GEBORT,GEBPLZ,PLZ,ORT,STRASSE,ORTALT,STRASSEA,PLZA LT,MK,EGVNAME,
EGGEBDAT,MWKZ,BETRAG,MDATUM,RATENANZ,RATENART,
KONTONR,LAND,LANDALT,GEBLAND,TRNCODE,SCHUFANR,
MTEXT,MSCORESL,MART,MINFO61,MINFO62,MINFO63,MINFO6 4,MINFO65,
MSBNAME,MSBTEL,MSBABT,current timestamp as SYSTEMZEIT, ABFZEIT as
ABFZEIT,ABFZEIT as LABFZEIT FROM SCHUFAE WHERE (STAT <>'UE' and
STAT <>'SE') and (STAT =' ' or (ABFZAEHL = 0 and (STAT ='1' or
ABFZEIT < timestamp(char( current date ) ||'-'|| char (current
time)) - (60) seconds)) or ( ABFZAEHL <> 0 and ABFZEIT <
timestamp(char( current date ) ||'-'|| char (current time)) -
(5)minutes)) and ABFSTART = ( select min(ABFSTART) from SCHUFAE
where (STAT <>'UE' and STAT <>'SE') and (STAT =' ' or (ABFZAEHL =
0 and (STAT ='1' or ABFZEIT < timestamp(char( current date )
||'-'|| char (current time)) - (60) seconds)) or ( ABFZAEHL <> 0
and ABFZEIT < timestamp(char( current date ) ||'-'|| char (current
time)) - (5) minutes))) ORDER BY ABFSTART,ABFZEIT
Auswahlfehler für Feld *N.

Das Problem reduziert sich demnach auf folgenden Befehl (mit einer Testdatei
xxx0d):

SQL-Anweisung eingeben und Eingabetaste drücken.
> select timestamp(char( current date ) ||'-'|| char (current time))
from xxx0d
SELECT-Anweisung vollständig verarbeitet.
===>

Diesen zusammengesetzten Timestamp kann die AS/400 nicht interpretieren!:

Anfang auf Zeile . . . . . .
....+....1....+....2....+.
TIMESTAMP
++++++++++++++++++++++++++
******** Datenende ********


Weiterhin sehen currrent date und current time auf der AS/400 ja so aus:

....+....1..
CURRENT DATE
2005-07-21
******** Datenende ********

....+....1..
CURRENT TIME
12:35:49
******** Datenende ********

Zusammengesetzt würde das so aussehen:

....+....1....+....2....+.
CURRENT TIMESTAMP
2005-07-21-12:35:49
******** Datenende ********

Richtig wäre aber:

....+....1....+....2....+.
CURRENT TIMESTAMP
2005-07-21-12.35.49.999440
******** Datenende ********


Wie könnte man also den Befehl

timestamp(char( current date )
||'-'|| char (current time)) - (60) seconds

anders darstellen?


Klaus