-
Fehler bei SQL "date(....)" ?
Hallo *ALL !
Folgene SQL Anweisung :
C/EXEC SQL
C+ Set :RecCount =
C+ (
C+ select count(*) from HARTPF
C+ where AKUNDE = :XKUNDE and AARTIK = :XARTIK
C+ and ADATUM > 0
C+ and date(concat(concat(substr(digits(ADATUM), 1, 2), '.'),
C+ concat(concat(substr(digits(ADATUM), 3, 2), '.'),
C+ substr(digits(ADATUM), 5, 2)) ))
C+ between DATE(DAYS(NOW()) - 7) and DATE(DAYS(NOW()))
C+ )
C/END-EXEC
wird im RPGLE Programm wegen Fehler :
SELECT/OMIT-Fehler in Feld (Cast((ISO Date/Time
formatting)CONCAT(SUBSTR(ChangeOfType(((Cast(ABS(H ARTPF_2.ADATUM¬127|),
Short Packed) AS Short Zoned))),DbopExprLiteral(1),DbopExprLiteral(2)),
DbopExprLiteral('.'),
SUBSTR(ChangeOfType(((Cast(ABS(HARTPF_2.ADATUM¬12 7|), Short Packed) AS
Short Zoned))),DbopExprLiteral(3),DbopExprLiteral(2)),Db opExprLiteral('.'),
SUBSTR(ChangeOfType(((Cast(ABS(HARTPF_2.ADATUM¬12 7|), Short Packed) AS
Short Zoned))),DbopExprLiteral(5),DbopExprLiteral(2))), Char Var Len,
max = 8 Pad(x
SELECT-/OMIT-Fehler in Teildatei QSQPTABL.
SELECT-/OMIT-Fehler in Teildatei QSQPTABL.
Wert in Datums-, Zeit- oder Zeitmarkenzeichenfolge ungültig.
nicht ausgeführt.
Es soll Anzahl in den letzten 7 Tagen geänderten Sätze ermittelt werden.
ADATUM ist ein 10-Stelliges dezimales Datumsfeld mit dem Inhalt TTMMJJHHSS .
Interaktiv funktioniert dieser SELECT prima.
Habe ich einen Fehler bei "date(....) between..." ?
Ev. andere Vorschläge zu o.g. Ermittlung ?
Gruß
A.W.
-
... between current date - 7 days and current date ...
now() = current date
-
Danke, Fuerchau für die prompte Antwort.
Habe ich gerade ausprobiert, leider mit dem gleichen Ergebnis.
Ich denke es liegt an dem CAST:
date( concat(concat(substr(digits(ADATUM), 1, 2), '.'),
concat(concat(substr(digits(ADATUM), 3, 2), '.'),
substr(digits(ADATUM), 5, 2)) ))
Aber wieso geht das interaktiv ?
-
Ah ja, du musst ein gültiges Datumsformat angeben, dass dem SQL-Datumsformat entspricht (set option datfmt=...).
Die H-Bestimmung hat damit nichts zu tun.
Die date-Funktion erkennt zwar viel, aber manchmal hapert es da doch.
Funktionieren tut immer das ISO-Format JJJJ-MM-TT unabhängig von jedweder Job-Einstellung.
-
Kleiner Tipp zum CONCAT: Anstelle der Funktion CONCAT(a, b) kann auch der CONCAT-Operator "a CONCAT b" benützt werden. Dadurch werden mehrere verschachtelte CONCATs übersichtlicher.
-
Daran habe ich schon gedacht, im Pgm habe ich :
Set Option
Naming = *Sys,
Commit = *None,
UsrPrf = *User,
DynUsrPrf = *User,
Datfmt = *iso,
CloSqlCsr = *EndMod
Die Probleme habe ich mit dem Datumsfeld ADATUM (TTMMJJHHSS) muß ich vorhen in *ISO konvertieren.
-
Hallo,
das Problem ist, dass das Jahr in deinem Datums-Feld nur 2-stellig ist. Damit SQL einen alphanumerischen String in ein Datum verwandeln kann, ist ein 4-stelliges Jahr erforderlich!
Das ISO-Format ist 'JJJJ-MM-TT'. Dein Format ist TT.MM.JJ.
Versuch's mal wie folgt:
PHP-Code:
Date(Substr(Digits(ADatum), 1, 2) concat '.' concat
Substr(Digits(ADatum), 3, 2) concat '.' concat
Case When Substr(Digits(ADatum), 5, 2) > '40'
Then '19' Else '20' End
Concat Substr(Digits(ADatum), 5, 2)
Interaktiv funktioniert es deshalb, weil Dein Job-Format vermutlich DMY ist. Auch das kann SQL erkennen. Wenn Du das Datums-Format über F13, Auswahl 1 auf ISO setzt, wirst Du die Abfrage ebenfalls nicht mehr ausführen können.
In Deinem SQL-Programm geht es schief, weil nicht das Job-Format, sonder *ISO als Datums-Format für die SQL-Abfragen verwendet wird.
Birgitta
-
Danke, Birgitta !
Das war's !!!
Problem geschlossen.
Viele Grüße an *ALL
Similar Threads
-
By olbe in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 28-12-06, 13:53
-
By deni87991 in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 08-08-06, 13:50
-
By jakarto in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 24-07-06, 13:41
-
By GraueEminenz in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 10-07-06, 11:58
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 14:11
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks