[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.929
    Das Tagesdatum ist ja auch der 14.11.2012.

    Wenn Du also selektierst
    Where Tagesdatum = 14.11.2012 bekommst Du auch alle Datensätze.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  2. #2
    Registriert seit
    Sep 2011
    Beiträge
    20
    Hallo Britta,

    ich habe mich wahrscheinlich nicht eindeutig ausgedrückt iich bekomme nicht nur die Datensätze vom 14.11.2012 (das wäre ja okay) sondern von allen Tagen!!!

    Hallo Andreas,

    funktioniert leider nicht (ODBC-Aufruf fehlgeschlagen [IBM] [System i Access ODBC-Treiber][DB2 für i5/OS]SQL0104-Token ) ungültig. Gültige Token:......)
    Ich habe es auch direkt im "System i Navigator" getestet da wird die letzte schließende Klammer markiert (läuft nicht), nehme ich die weg kommt die
    Fehlermeldung:
    "Nachricht: [SQL0181] Wert in Datums-, Zeit- oder Zeitmarkenzeichenfolge ungültig. Ursache . . . . : Die Darstellung der Zeichenfolge eines Datums-, Zeit- oder Zeitmarkenwerts erfüllt nicht die Bedingungen. *N ist entweder die ungültige Zeichenfolgekonstante oder die Spalten- oder Host-Variable, die die Zeichenfolge enthielt...."

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    1. Birgitta hat dich schon richtig verstanden.
    Sie hat ganz richtig gesagt, dass du alle Sätze bekommst, wenn du Tagesdatum mit Tagesdatum vergleichst.
    Es wäre das selbe wenn du WHERE 1=1 schreiben würdest.

    2. zum Fehler:
    ODBC/JDBC Treiber führt einige konvertierungen durch.
    Probier einfach folgendes:

    Code:
    select bmfirm, bmiden, bmidv, bmprnr, bmqkz, bmqsta,            
           bmort, bmber,                  
           bmbmen, bmvmen, bmrmen, bmlm, bmmlm,                     
           bmlenr, bmzule, bmbst1, bmbstp,                          
           bmwenr, bmwepo, bmdtdc, bmdtee,                         
    from birdatv6.pbestlo
    
    WHERE Date(Trim (Char (BMDTEE )) concat '000000') = Current Date
    order by bmdtee DESC

  4. #4
    Registriert seit
    Sep 2011
    Beiträge
    20
    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!!!

  5. #5
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    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

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.929
    Zitat Zitat von svt Beitrag anzeigen
    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  7. #7
    Registriert seit
    Jan 2007
    Beiträge
    1.002
    OT

    Oder falls Ihr auf Release 7.1 oder höher seid:
    Uuiii Brigitta, müsste ich da was wissen?

    /OT
    kf

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.929
    Zitat Zitat von camouflage Beitrag anzeigen
    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  9. #9
    Registriert seit
    Sep 2011
    Beiträge
    20

    Thumbs up 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????

  10. #10
    Registriert seit
    Aug 2003
    Beiträge
    1.508

  11. #11
    Registriert seit
    Sep 2011
    Beiträge
    20

    Question 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???

  12. #12
    Registriert seit
    Aug 2001
    Beiträge
    2.929
    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. JDBC Abfrage mit DB-Tool , SQL0901 Fehler
    By COS in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 17-11-08, 08:13
  2. CREATE FUNCTION mit select im Bauch ?
    By cheffe1008 in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 21-09-06, 16:05
  3. Triggersyntax erzeugt nur Fehler
    By deni87991 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-08-06, 10:05
  4. Fehler im SQL bzw. Joblog
    By GraueEminenz in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 10-07-06, 11:58
  5. Cobol-Programm mit Embedded SQL (SELECT CASE)
    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
  •