PDA

View Full Version : Zeitstempel mit CHAR-Feld vergleichen



harbir
28-10-14, 12:25
Hallo,

ich möchte alle Datensätze selektieren, die ab einem bestimmten Zeitstempel neu in eine Datei geschrieben wurden.

In der Datei existiert ein Feld TS1 mit CHAR(14), das Datum und Uhrzeit im Format YYYYMMDDHHMMSS enthält.

Wie kann ich das jetzt am einfachsten mit meinem Zeitstempel vergleichen?

Definition des Zeitstempels:
D xtime_vergl s z inz(*sys)

Wahrscheinlich ganz einfach, doch ich steh grad auf dem Schlauch....:confused:

Gruß
harbir

Fuerchau
28-10-14, 12:45
%timestamp(TS1:*ISO0) müsste eigentlich ein Timestamp liefern mit dem du dann vergleichen kannst.

harbir
28-10-14, 12:48
danke,
und wie würde ich den Timestamp xtime_vergl umwandeln müssen, um ein cahr(14)-Feld zu bekommen?

dschroeder
28-10-14, 12:48
Ich denke, du muss den String mittels subst in seine Segmente zerlegen und im ISO-Timestamp-Format wieder zusammensetzen. Dann mit der Funktion %timestamp zu einem echten Timestamp machen:

string = ’1960-09-29-12.34.56.000000’; // So was muss du erzeugen
timest = %timestamp(string); // Dann in echten Timestamp umwandeln.

Dieter

dschroeder
28-10-14, 12:56
Ach so, wenn du das sorum machen willst, müsste folgendes gehen:

%subst(%char(xtime_vergl):1:14)

harbir
28-10-14, 13:09
danke @all

werd ich jetzt gleich mal testen

Pikachu
28-10-14, 13:31
Probier mal so:


D XTIME_VERGL S Z INZ(*SYS)
D
D ZEITPUNKT DS
D ZEITPUNKT14 14A INZ
D ZEITPUNKTREST 6A INZ
D
C *ISO0 MOVEL XTIME_VERGL ZEITPUNKT

Fuerchau
28-10-14, 14:23
Ein Timestamp ist CHAR(22) incl. Trennzeichen.

%subst(%char(xtime_vergl:*ISO0):1:14)
könnte klappen.

Pikachu
28-10-14, 14:45
Meine Zeitmarken hier sind 26 mit und 20 ohne Trennzeichen ...


Ein Timestamp ist CHAR(22) incl. Trennzeichen.

B.Hauser
29-10-14, 02:29
Weiterer Vorschlag: Die Vergleichszeitmarke mit der SQL-Funktion VARCHAR_FORMAT (ab Release 6.1) konvertieren:


Exec SQL Set :CharTS = VarChar_Format(Current_Timestamp, 'YYYYMMDDHH24MISS');

Meine Zeitmarken sind übrigens auch 14 (ohne Trennzeichen und Nachkommastellen), 20 und 26 (mit Trennzeichen und Nachkommastellen).

Die CHAR(22) Definition wird nur für Zeitmarken-Differenzen in konvertiertem numerischem Format mit Trennzeichen und +/- Zeichen verwendet.

Birgitta