Anmelden

View Full Version : Datumsformat dd.mm.yy HH.mm



tarkusch
21-02-14, 11:58
Hallo liebes Forum,

ich bekomme eine Datei, wo das Datumsfeld/Timestamp eine Alpha-Feld ist und so aussieht:
"23.09.2012 05:45".

Leider kann ich so nicht den Satz ermitteln der als letztes bearbeitet worden ist.

Kann ich mit SQL dieses Alpha-Feld in das ein Format(Timestamp) wandeln wo ich nach Datum sortieren kann?

Oder muss ich das in einem Rpg-Programm abhandeln?

Dank im Voraus

Tarki

Pikachu
21-02-14, 12:21
Wie wärs damit? :)


SELECT TIMESTAMP((SUBSTR(Feld, 1, 10)),
(SUBSTR(Feld, 12, 5))) AS DATETIME
FROM Bibliothek/Datei
ORDER BY DATETIME DESC
Siehe SQL TIMESTAMP (http://publib.boulder.ibm.com/infocenter/iadthelp/v7r1/topic/com.ibm.etools.iseries.langref2.doc/rbafzmst269.htm)

B.Hauser
21-02-14, 12:42
Bei Release 6.1 oder höher

Select Timestamp_Format(YourField, 'DD.MM.YYYY HH:MI')
From ...

Birgitta

tarkusch
21-02-14, 13:04
Hallo Frau Hauser,

unser Releas ist höher aber ich bekomme die Fehlermeldung:


Weitere Nachrichteninformationen

Nachrichten-ID . . . . : CPF426B Bewertung . . . . . . : 50
Nachrichtenart . . . . : Diagnose
Sendedatum . . . . . . : 14.02.21 Sendezeit . . . . . . : 13:50:44

Nachricht . . . : Funktion TIMESTAMP_FORMAT kann nicht ausgeführt werden.
Ursache . . . . : Funktion TIMESTAMP_FORMAT kann nicht ausgeführt werden;
Ursachencode 13. Die Ursachencodes haben folgende Bedeutung:
13 -- Die Zeitmarke kann von der angegebenen Formatierzeichenfolge nicht interpretiert werden.


Die Schablone vom Feld würde ja auch passen.
Was mache ich da falsch?

Grüße

Tarki

tarkusch
21-02-14, 13:05
@Pikachu
Funktioniert toll, danke vielmals.

Tarki

tarkusch
21-02-14, 13:46
Hallo Pikachu,

ich hätte da noch 2 Fragen:
Ich erstelle mir ja in der QTEMP eine Workdatei.
Mein Wunsch wäre das Feld F1 gleich mit einem Update-Statement richtig zu stellen, habe aber keinen ordentlichen Key.
Mein Statement Funktioniert leider nicht:


UPDATE QTEMP/QFILE SET F1 = CONCAT(Substr(F1, 7, 4), Substr(F1,
4, 2))Concat(Substr(F1, 1, 2)) Concat(Substr(F1, 12,
2))Concat(Substr(F1, 15, 2))


Wie kann ich die RRN in das Statement einbauen?

Die 2 Frage wäre wie ich dein SqlStatement in die das Update einbauen könnte. Leider ist ja das F1 Feld kürzer als der Timestamp.

lg

Tarki

Fuerchau
21-02-14, 14:26
Ein Timestamp ist ein eigener Feldtyp.
Nach der Umwandlung in ein Timestamp kannst du daraus wieder teile extrahieren:

substr(char(timestamp(.....)), 1, 10) concat ....

Problem ist natürlich, dass der Timestampausdruck komplett zu wiederholen ist.

Update myfile a set a.myrrn = rrn(a)

Eine Anmerkung zum concat:
"concat(a, b)" ist fom Ergebnis das selbe wie "a concat b".
Nur erlaubt die Funktion "Concat" halt nur 2 Argumente.

SQL hat aber einen integrierten Operator "concat":

a concat b concat c .....

Dies dürfte deine Schreibweise vereinfachen auch wenn das Ergebnis sich nicht ändert.

tarkusch
21-02-14, 14:42
Hallo,

Update myfile a set a.myrrn = rrn(a)

Mir ist nicht klar der Ausdruck a.myrrn.
Wie definiere ich das denn im Update?

Danke

Fuerchau
21-02-14, 16:14
Was willst du mit der rrn()?
Wenn du in deiner Tabelle ein Feld MyRRN definierst, kannst du die rrn() mit meinem Beispiel dort speichern.
Ansonsten ist die RRN() als Funktion eher unsinnig und nicht SQL-typisch.