itnirvana
Goto Top

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.
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

Content-Key: 952838367

Url: https://administrator.de/contentid/952838367

Printed on: May 4, 2024 at 08:05 o'clock

Member: em-pie
em-pie Jul 09, 2021 updated at 08:26:07 (UTC)
Goto Top
Moin,

hast du mal ein
where id like 'gug' and created >= CAST(DATEADD(day, -1,Getdate()) as DATE)  
versucht?

Gruß
em-pie
Member: ukulele-7
ukulele-7 Jul 09, 2021 at 08:56:45 (UTC)
Goto Top
Ich bin ja für
where id like 'gug' and created >= CONVERT(DATE,(DATEADD(day, -1,Getdate()))  
face-wink
Member: itnirvana
itnirvana Jul 09, 2021 at 10:19:29 (UTC)
Goto Top
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
Member: em-pie
em-pie Jul 09, 2021 at 10:26:23 (UTC)
Goto Top
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.

Hieroglyphen!?
Kannst du das bitte mal an einem Beispiel (anonymisiert) zeigen?
Member: GrueneSosseMitSpeck
GrueneSosseMitSpeck Jul 09, 2021 updated at 11:09:23 (UTC)
Goto Top
Member: itnirvana
itnirvana Jul 09, 2021 at 11:11:24 (UTC)
Goto Top
Hallo,

das ist die obere Auswertung, da sieht man er geht auf Beide Tage

obere


untere Abfrage wirft diesen Fehler

untere

Gruss
Jonas
Member: MadMax
MadMax Jul 09, 2021 at 11:38:33 (UTC)
Goto Top
Hallo Jonas,

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)  
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:
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
Member: ukulele-7
ukulele-7 Jul 19, 2021 at 07:39:19 (UTC)
Goto Top
Bitte als gelöst markieren wenn erledigt.
Member: em-pie
em-pie Jul 21, 2021 at 11:19:51 (UTC)
Goto Top
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

Schaue dir mein Statement noch einmal genau an.
Ich habe ja (fälschlicherweise) >= geschrieben. Du brauchst aber nur ein =.

Gruß
em-pie
Member: MadMax
MadMax Jul 21, 2021 at 17:31:17 (UTC)
Goto Top
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