creamycewie
Goto Top

TSQL - Abfrage Datetime Bereich

Hallo.

Ich habe eine Tabelle (table1) in welcher div. Datensätze hinterlegt sind.
Eines der Felder nennt sich "Datum" (Feldtyp "DateTime")

Ich brauche nun eine Abfrage, welche mir alle Datensätze eines Zeitraums (zb 01.01.2019 -31.01.2019) liefert.
Die Eingabe des Zeitraums erfolgt durch parameter vom Typ "date".
Abfrage derzeit sieht so aus:

select * from table1 where Datum >= :Von_Datum and Datum <= :Bis_Datum

Funktioniert an sich, problem dabei ist: Ich sehe keine Datensätze vom Enddatum.
(in diesem Beispiel sehe ich nur DS von Datum 01.01.2019 - 30.01.2019)


Wo habe ich den Denkfehler?
Danke & LG

Content-Key: 505840

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

Printed on: April 25, 2024 at 08:04 o'clock

Member: NordicMike
Solution NordicMike Oct 17, 2019 at 10:54:02 (UTC)
Goto Top
Vielleicht gibt es das Datum nicht z.B. 31.2.
Member: SeaStorm
Solution SeaStorm Oct 17, 2019 at 10:54:14 (UTC)
Goto Top
Hi

du hast ein Datetime, was also auch Minuten etc beinhaltet.
Wenn du jetzt sagst, "Gib mir alles bis 30.01.2019", dann wird da ein "Gib mir alles bis 30.01.2019 00:00:00" draus.
Entsprechend bekommst du nur Datensätze bis inkl 29.01.2019 23:59:59.
Jetzt kannst du
deine Abfrage so gestalten, das an das angegebene Datum immer ein 23:59:59 angehängt wird,
das datetime vom bis_datum in ein date gewandelt wird,
das Ausgewählte Datum immer im Query um einen Tag erhöhen
Mitglied: 141320
Solution 141320 Oct 17, 2019 updated at 11:02:26 (UTC)
Goto Top
<= Datum bedeutet
<= 30.01.2019 00:00:00
Also ist alles an dem Tag nicht mit drin
Definiere es z.b so
< 31.01.2019
oder gebe bei deinem Datum die zeit mit an, oder mit Rechenoperation + 1 Tag usw.

Jetzt sollte es dann auch bei dir klick machen face-wink

p.s. Es gibt für sowas auch den BETWEEN Operator
Member: CreamyCewie
CreamyCewie Oct 17, 2019 at 11:21:50 (UTC)
Goto Top
Habe es nun gelöst bekommen, ich habe das "Datum" in ein date konvertiert, damit es mit dem Parameter übereinstimmt

where ( convert (varchar(10), Datum, 104) >= :Von_Datum) and (convert (varchar(10), Datum, 104) <= :Bis_Datum)


Danke euch!