Announcement

Collapse
No announcement yet.

Abrfrage in SQL nach Datumszeitraum

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

  • Abrfrage in SQL nach Datumszeitraum

    Hallo Zusammen,
    ich habe ein Problem mit einer Abfrage eines zeitraumes in SQL
    wenn ich das Script so anwende liefert er mir keine werte
    ziel ist es das alle fertigen Projekten von heute bis (heute -28 Tage)

    WHERE Projekt.AuftragStatus=9 AND Projekt.FertigStellung IS NOT NULL AND
    Projekt.Fertigstellung >= DateAdd(Day, -28, CONVERT(DATETIME, CONVERT(CHAR(8), GETDATE(), 112), 112))

    so funktiuoniert es
    WHERE Projekt.AuftragStatus=9 AND
    Projekt.FertigStellung >= '14.05.2013' and
    Projekt.Fertigstellung <= '14.06.2013'


    und so ist das datum hinterlegt im feld fertigstellung 2012-12-31 00:00:00.000

  • #2
    Welchen Datentyp hat das Feld "Fertigstellung"? Ist das (small)datetime oder varchar?

    bye,
    Helmut

    Comment


    • #3
      Das Felsd steht auf datetime

      Comment


      • #4
        Hallo,
        Originally posted by MAlex View Post
        Das Felsd steht auf datetime
        Warum dann der Umweg über Strings? Eigentlich sollte doch dann
        [highlight=sql]
        where ...
        and Projekt.Fertigstellung >= DateAdd(Day, -28, GETDATE())
        [/highlight]
        direkt funktionieren.

        Gruß Falk
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          Warum dann der Umweg über Strings?
          Weil er die Uhrzeit so entfernt.

          Comment


          • #6
            Hallo,

            man kann auch schreiben

            Code:
             >= Getdate() -29
            (ich hab's getestet)

            Gruß
            docendo discimus

            Comment


            • #7
              Inklusive Abschneiden des Zeitanteils könnte man das Ganze auch so formulieren:

              ... WHERE Projekt.AuftragStatus=9 AND Projekt.FertigStellung IS NOT NULL AND
              FLOOR(cast(getdate() as float)) - FLOOR(cast(Projekt.Fertigstellung as float)) <= 28

              Wenn das auch nichts ergibt, dann vielleicht mal den AuftragStatus-Wert checken :-)

              bye,
              Helmut

              Comment


              • #8
                ab SQL-Server 2008

                ... CAST(GETDATE()-28 AS DATE)

                Falls auf Projekt.Fertigstellung ein Index liegt, sollte man wieder auf DATETIME casten

                ... CAST (CAST(GETDATE()-28 AS DATE) AS DATETIME)

                Auch Helmuts Lösung wird Index ignorieren...

                Comment

                Working...
                X