1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Problem: Datum vergleichen

Dieses Thema im Forum "MySQL" wurde erstellt von Daphne, 15 März 2012.

  1. Daphne

    Daphne Neuer Benutzer

    Hallo Zusammen,

    ich will einfach nur, dass zwei Daten (DATE, YYYY-MM-DD) miteinander verglichen werden und wenn Date2 kleiner als Date1 ist, solls rausgeschmissen werden (hab die 2 Tabellen vorher geleftjoint, alles gut):

    WHERE v_c.Date1 <= ANY (SELECT v_sp.Date2 FROM bi_staging.s_stud_pat as v_sp WHERE v_sp.Date2 is not null)

    Er schmeißt zwar welche raus, aber völlig unkontrolliert (meiner Meinung nach).
     
  2. ukulele

    ukulele Datenbank-Guru

    Ich habe ANY noch nie verwendet. Würde nicht
    WHERE v_c.Date1 <= (SELECT min(v_sp.Date2) FROM bi_staging.s_stud_pat as v_sp WHERE v_sp.Date2 is not null)
    das tun, was du willst?
     
  3. Daphne

    Daphne Neuer Benutzer

    Vielen Dank für die Antwort.
    Wenn ich aber mit "min" arbeiten würde, holt er mir in der Select-Anweisung ja nur einen Wert. Ich brauch den Vergleich aber für alle, insgesamt sinds ca. 24.000.
     
  4. ukulele

    ukulele Datenbank-Guru

    Sry ich meinte max(v_sp.Date2)

    ---
    CREATE TABLE T1 (ID int) ; GO INSERT T1 VALUES (1) ; INSERT T1 VALUES (2) ; INSERT T1 VALUES (3) ; INSERT T1 VALUES (4) ;
    Die folgende Abfrage gibt TRUE zurück, da 3 kleiner als einige der Werte in der Tabelle ist.


    IF 3 < SOME (SELECT ID FROM T1) PRINT 'TRUE' ELSE PRINT 'FALSE' ;

    Quelle: http://msdn.microsoft.com/de-de/library/ms175064.asp

    ---

    Also wenn ich das richtig verstehe, vergleichst du einen Wert mit einer Werteliste. Ist dein Wert kleiner oder gleich einer der Werte in der Liste trifft die Bedingung zu. Da der Wert nicht gleich sein muss sondern auch kleiner sein kann als ein beliebiger Wert in der Liste kannst du auch schauen, ob er kleiner oder gleich dem größten Wert in der Liste ist, das müsste nach meinem Verständniss das selbe Ergebniss liefern.
     
  5. Daphne

    Daphne Neuer Benutzer

    Ha... du hast voll recht: Ich habe einen Wert aus einer Spalte mit allen Werten aus der anderen verglichen. Oh man...
    Wenn ich die SELECT-Abfrage entferne, passts. Aber dann vergleicht er nur die, wo bei beidem ein Datum drin steht. Das soll er aber unbedingt nicht machen!
    Kann ich ihm irgendwie sagen, dass er die Bedingung "v_c.date1<= v_sp.date2" nur ausführen soll, wenn date2 is not null?
     
  6. ukulele

    ukulele Datenbank-Guru

    Na klar:
    Code:
    WHERE (    v_c.date1 IS NOT NULL
    AND        v_sp.date2 IS NOT NULL
    AND        v_c.date1 <= v_sp.date2
    OR        v_sp.date2 IS NULL
    OR        ... )
    AND    weitere....
    
    Auf die Klammerung kommt es an.
     
    Daphne gefällt das.
  7. Daphne

    Daphne Neuer Benutzer

    Super, vielen, vielen Dank :)
    Da stand ich aber mal richtig aufm Schlauch :)
     
  8. ukulele

    ukulele Datenbank-Guru

    Das hab ich manchal mehrmals am Tag :eek:
     

Diese Seite empfehlen