Announcement

Collapse
No announcement yet.

MSSQL: Datum vergleichen wenn vorhanden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MSSQL: Datum vergleichen wenn vorhanden

    Hallo,

    ich müsste aus der Datenbank verschiedene Einträge holen die (optional) ein Start- und End-Datum haben können.

    Nun bekomm ich bei meiner Abfrage die diese Daten mit dem heutigem Datum vergleicht zwar die Datensätze mit Start- und End-Datum angezeigt. Aber diejenigen wo kein Datum drinsteht werden "übersehen"...

    So siehts bis jetzt aus:

    SELECT *
    FROM Tabelle
    WHERE Aktiv = 1
    AND EndDatum > GETDATE()
    AND StartDatum < GETDATE()

    Das heißt doch ich müsste das ganze mit IF abfragen. oder?
    Aber wie? Ich hab schon einiges ausprobiert. U.a. auch folgendes:

    SELECT *
    FROM Tabelle
    WHERE Aktiv = 1
    IF (EndDatum != NULL)
    AND EndDatum > GETDATE() END
    IF (StartDatum != NULL)
    AND StartDatum < GETDATE() END

    Weiß da vieleicht jemand bescheid?
    Zuletzt editiert von micjan; 30.04.2008, 11:24.

  • #2
    Wenn man NULL Werte mit etwas vergleichen will, erhält man immer ein negatives Ergebnis.

    IF gibt es unter MS SQL, dient aber eher zur Ablaufsteuerung.
    Besser wäre CASE WHEN, ist aber auch nicht nötig.

    Es reicht aus, auf IS NULL zu prüfen.

    [highlight=SQL]SELECT *
    FROM Tabelle
    WHERE Aktiv = 1
    AND (EndDatum IS NULL
    OR EndDatum > GETDATE())
    AND (StartDatum IS NULL
    OR StartDatum < GETDATE())[/highlight]
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      dankeschön!

      so gehts

      Comment

      Working...
      X