SQL Query nicht auf letze 24 Stunden beschränken sondern wirklich den letzten Tag bis 0 uhr
Hallo,
ich habe in einer Datenbank in einer Query dies eingebaut.
Damit sehe ich immer genau die letzten 24 Stunden. Wie kann ich das erweitern, das ich wirklich den letzten Tag sehe 0 bis 0 Uhr.
Ich habe noch ein Feld "BIZ" wie kann ich dieses mit DISTINCT sortieren
Gruss
Jonas
ich habe in einer Datenbank in einer Query dies eingebaut.
where id like 'gug' and created >= >= DATEADD(day, -1,Getdate())
Damit sehe ich immer genau die letzten 24 Stunden. Wie kann ich das erweitern, das ich wirklich den letzten Tag sehe 0 bis 0 Uhr.
Ich habe noch ein Feld "BIZ" wie kann ich dieses mit DISTINCT sortieren
Gruss
Jonas
Please also mark the comments that contributed to the solution of the article
Content-ID: 952838367
Url: https://administrator.de/forum/sql-query-nicht-auf-letze-24-stunden-beschraenken-sondern-wirklich-den-letzten-tag-bis-0-uhr-952838367.html
Printed on: May 13, 2025 at 12:05 o'clock
10 Comments
Latest comment
Zitat von @itnirvana:
danke. Der obere geht ab jetzt zurck where id like 'gug' and created >= CAST(DATEADD(day, -1,Getdate()) as DATE)
Aber nicht explizit diesen Tag.
der untere funktioniert leider nicht.
danke. Der obere geht ab jetzt zurck where id like 'gug' and created >= CAST(DATEADD(day, -1,Getdate()) as DATE)
Aber nicht explizit diesen Tag.
der untere funktioniert leider nicht.
Hieroglyphen!?
Kannst du das bitte mal an einem Beispiel (anonymisiert) zeigen?
Hallo Jonas,
die einfache Lösung ist, daß Du created einfach auf das Datum verkürzt und das dann mit dem gestrigen Datum vergleichst:
Das ist aber nur sinnvoll, wenn die id wirklich eine ID ist und darüber die Einschränkung der Datensätze erfolgt und die Prüfung auf das Datum nur zusätzlich ist.
Sinnvoller ist folgende Lösung, da kann auch ein Index verwendet werden:
Es wird extra kein between verwendet, weil dann der heutige Tag, 00.00 Uhr, mit in der Auswahl wäre, was ja nicht richtig ist.
Das cast (... as datetime) sollte dann der Datentyp sein, den auch created hat, ich hab hier einfach mal datetime angenommen.
Zu Deinem Problem mit BIZ und mit distinct sortieren:
Distinct dient nicht der Sortierung, sondern dafür, daß Werte nur einmal im Ergebnis sind. Sortieren kannst Du dann nach allen Spalten, die auch in Deiner distinct-Liste dabei sind. Der Befehl würde dann lauten:
Gruß, Mad Max
die einfache Lösung ist, daß Du created einfach auf das Datum verkürzt und das dann mit dem gestrigen Datum vergleichst:
where id like 'gug' and cast (created as date) = cast (dateadd (d, -1, getdate ()) as date)
Sinnvoller ist folgende Lösung, da kann auch ein Index verwendet werden:
where id like 'gug' and created >= cast (cast (dateadd (d, -1, getdate ()) as date) as datetime) and created < cast (cast (getdate () as date) as datetime)
Es wird extra kein between verwendet, weil dann der heutige Tag, 00.00 Uhr, mit in der Auswahl wäre, was ja nicht richtig ist.
Das cast (... as datetime) sollte dann der Datentyp sein, den auch created hat, ich hab hier einfach mal datetime angenommen.
Zu Deinem Problem mit BIZ und mit distinct sortieren:
Distinct dient nicht der Sortierung, sondern dafür, daß Werte nur einmal im Ergebnis sind. Sortieren kannst Du dann nach allen Spalten, die auch in Deiner distinct-Liste dabei sind. Der Befehl würde dann lauten:
select distinct BIZ from Tabelle order by BIZ
Gruß, Mad Max
Zitat von @itnirvana:
Hallo,
danke. Der obere geht ab jetzt zurck where id like 'gug' and created >= CAST(DATEADD(day, -1,Getdate()) as DATE)
Aber nicht explizit diesen Tag.
der untere funktioniert leider nicht.
Gruss
Jonas
Hallo,
danke. Der obere geht ab jetzt zurck where id like 'gug' and created >= CAST(DATEADD(day, -1,Getdate()) as DATE)
Aber nicht explizit diesen Tag.
der untere funktioniert leider nicht.
Gruss
Jonas
Schaue dir mein Statement noch einmal genau an.
Ich habe ja (fälschlicherweise) >= geschrieben. Du brauchst aber nur ein =.
Gruß
em-pie
Hallo em-pie,
das funktioniert auch nicht. created enthält ja auch die Uhrzeit, also muß entweder auch created zu date gewandelt und mit = verglichen werden (ungünstige Ausführung) oder es braucht auch eine Abgrenzung nach oben, also heute. Und das sind genau die beiden where-Klauseln, die in meinem Beitrag stehen.
Aber das dürfte mittlerweile egal sein, Jonas scheint hier nicht mehr mitzulesen.
Gru, Mad Max
das funktioniert auch nicht. created enthält ja auch die Uhrzeit, also muß entweder auch created zu date gewandelt und mit = verglichen werden (ungünstige Ausführung) oder es braucht auch eine Abgrenzung nach oben, also heute. Und das sind genau die beiden where-Klauseln, die in meinem Beitrag stehen.
Aber das dürfte mittlerweile egal sein, Jonas scheint hier nicht mehr mitzulesen.
Gru, Mad Max