-
Hallo Birgitta,
entschuldige die Unwissenheit eines Leien!!
Hallo Andreas,
sorry funktioniert leider immer noch nicht:
(ODBC-Aufruf fehlgeschlagen [IBM] [System i Access ODBC-Treiber][DB2 für i5/OS]SQL0181-Wert in Datums-,Zeit-oder Zeitmarkenzeichenfolge ungültig.(#-181),
aber ich glaube wir sind nah dran.
Vielen Dank erstmal für Deine (Eure) Hilfe!!!
-
Bei mir funktioniert es im Navigator.
Eventuell hast du in der Spalte nicht durchgehend das Format CCYYMMDD??
Lass dir mal den größten und niedrigsten Wert anzeigen.
Select Min(BMDTEE ) From birdatv6.pbestlo
Select Max(BMDTEE ) From birdatv6.pbestlo
-
 Zitat von svt
SQL0181-Wert in Datums-,Zeit-oder Zeitmarkenzeichenfolge ungültig.(#-181)
Dann habt Ihr numerische Werte, die sich nicht in ein Datum konvertieren lassen, z.B. 0 oder 20110229.
In diesem Fall wäre es besser das Current_Date in einen numerischen Wert zu verwandeln.
Das funktioniert wie folgt:
Code:
Dec(Replace(Char(Current_Date, ISO), '-', ''), 8 , 0)
Oder falls Ihr auf Release 6.1 oder höher seid:
Code:
Dec(VarChar_Format(Current_Timestamp, 'YYYYMMDD'), 8, 0)
Birgitta
-
OT
Oder falls Ihr auf Release 7.1 oder höher seid:
Uuiii Brigitta, müsste ich da was wissen?
/OT
kf
-
 Zitat von camouflage
OT
Uuiii Brigitta, müsste ich da was wissen?
/OT
... Sorry kleiner Vertipper (die 6 liegt ja auch knapp neben der 7)!
Außerdem haben wir für Release 7.1 inzwischen den 5. Technologie Review (TR) was auch fast 2 Releases gleichkommt 
Birgitta
-
geschafft!!!!!
Hallo Ihr Zwei  ,
genau das war das Problem, es gab einen
Datensatz (Wie das auch immer passiert ist ???) mit blank und deswegen hat es auch nicht funktioniert!!!!!
Jetzt klappt es Prima, dank Eurer Hilfe
nochmals Vielen Dank!!!!
Aber eine kleine Frage habe ich noch,
wenn ich den aktuellen Tag und den Tag
davor haben möchte (-1) wie Frage ich das ab????
-
Current Date - 1 Days
Current DAte + 1 Months
usw.
-
Abfragezeit hat sich verzehtfacht!!!!
Hallo AS/400 Freunde,
seit dem ich meine Abfrage mit
Code:
AND Date(Trim (Char (TPDTE )) concat '000000') >Current Date -2 days
abfrage benötige ich
das vielfache an Zeit gegenüber früher:
Code:
AND TPDTE > '20121231'
Wie kommt das bzw. wie kann man das
wieder optimieren???
-
Ich weiß nicht wo und wie Du das SQL-Statement einbindest bzw. aufrufst!
Du solltest das numerische Tagesdatum - 2 Tage außerhalb des SQL Statements ermitteln und dann als (Host)Variable in das SQL-Statement einbinden.
Code:
AND TPDTE > :HostVarDate
Sollte dies nicht möglich sein, solltest Du Dein Select-Statement dahingehend verändern, dass das numerische Datum direkt mit dem numerischen Wert des laufenden Datums - 2 Tage verglichen wird:
Code:
AND TPDTE > Dec(VarChar_Format(Current_Timestamp - 2 days, 'YYYYMMDD'), 8, 0)
Vor Release 6.1 konnte der Query Optimizer nur Indices verwenden, die über Original-Spalten/Felder gebildet wurden.
Sobald auf der linken Seite des Vergleichsoperators skalare Funktionen verwendet werden, wird die "Original"-Spalte verändert und der Query Optimizer kann für diese Spalte keinen Index mehr verwenden. Das kann dazuführen, dass anstatt eines Index-Access (Zugriff über Schlüssel) ein Table-Scan (ganze Tabelle wird gelesen) erfolgt.
Ab 6.1 können Indices über "konstruierte" Felder gebildet werden, die dann u.U. auch vom Optimizer genutzt werden können (von IBM noch nicht vollständig realisiert!)
Birgitta
-
Hallo Birgitt,
wir haben Release 5, ich habe folgenden
Code getestet:
Code:
AND TPDTE > Dec(VarChar_Format(Current_Timestamp - 2 days, 'YYYYMMDD'), 8, 0)
Es kam die Fehlermeldung: "...SQL0171- Argument 2 der Funktion VarChar_Format ungültig"
Die erste Variante interresiert mich sehr:
Code:
AND TPDTE > :HostVarDate
Wenn ich das richtig verstehe kann ich das Vergleichs-Datum direkt aus einer Exceldatei (A1) ziehen. Das wäre genau mein Ding da ich mitlerweile diese gewünschten Daten über eine ODBC-Verbindung in Excel Abfrage!!!
Mein Problem (da ich noch Anfänger bin!!!) ist, wie binde ich die Exceldatei (Zelle A1, mit den gewünschten Datum)
in das SQL-Statement ein????
Kannst Du mir hier helfen????
Danke
-
VarChar_Format gibt es in V5 noch nicht.
Ich glaube, aber Replace müsste es schon geben:
dec(replace(char(current date - 2 days, iso), '-', ''), 8, 0)
Wenn das nich geht, kannst du natürlich in einer Excelzelle das Format als JJJJMMTT vorbereiten.
In deiner Abfrage verwendest du dann ein "?" als Parameter.
Über die Abfrageeigenschaften kannst du dann jedem Parameter eine Excel-Zelle zuweisen.
-
Hallo Fuerchau,
danke für deinen Tip funktioniert auch
aber dauert auch extrem lange. Das mit
den "?" als Parameter habe ich leider nicht
hinbekommen, kannst Du mir als Laien das genauer erklären????
Danke
Similar Threads
-
By COS in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 17-11-08, 08:13
-
By cheffe1008 in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 21-09-06, 16:05
-
By deni87991 in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 24-08-06, 10:05
-
By GraueEminenz in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 10-07-06, 11:58
-
By klausgkv in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 08-06-06, 13:47
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