verwendetes Datenbanksystem: SQLServer 2016
Hallo,
ich habe ein kleines Problem und verzweifle bald, da ich nicht weiterkomme. Ich habe eine Tabelle mit sechs Feldern:
id Jobid(int) Objectid(int) StartDate(DateTime) EndDate(DateTime)
1 104 300 2018-02-11 01:00:00:000 2018-02-11 05:00:00:000
2 104 300 2018-02-11 08:00:00:000 2018-02-11 13:00:00:000
Jetzt möchte ich mit einer Abfrage nur schauen ob das Datum sich im Bereich befidnet:
SELECT * FROM tbl_JobDeviceTimes WHERE StartDate <= '2018-02-11' AND EndDate >= '2018-02-11'
Leider ist das Ergebnis null, was mache ich falsch bei der Abfrage!?
Vielen Dank schon jetzt im Voraus für Eure Mühe und Viele Grüße
Hi,
naja - ist doch logisch - beide Datensätze erfüllen die von dir gestellten Bedingungen nicht.
11.02.2018 01:00 Uhr ist nicht kleiner gleich 11.02.2018 00:00 Uhr
11.02.2018 08:00 Uhr ebenso wenig
Kp auf was du eigentlich filtern möchtest - aber im Zweifelsfall muss deine Bedingung wohl so formuliert werden, dass ein Startdatum ≥ 11.02.2018 00:00 Uhr erlaubt ist, und Enddatum ≤ 11.02.2017 23:59... sein muss.
LG
Edit: In anderen Worten - sofern du keine Uhrzeit dabei schreibst - gilt 00:00 Uhr.
richtig, dass ist mir auch klar. Aber wie kann ich die Uhrzeit außen vor lassen und einfach nur nach dem Datum filtern!? Die DB ist mir leider so gegeben!
Es soll also nur geschaut werden wie viele Datensätze es gibt die im Datumsbereich liegen?
Gruß
Hi,
leider hast du immer noch keine richtige Bedingung formuliert.
nun - im einfachsten Fall - bei der Formulierung:
"Finde alle Datensätze, die am 02.11.2018 angefangen und geendet haben" - würde ich:
SELECT * FROM tbl_JobDeviceTimes WHERE StartDate >= '2018-02-11' AND EndDate < '2018-02-12'
verwenden.
Oder wie lautet deine Bedingung?
LG
Edit: Zumindest sofern man davon ausgehen darf, dass das StartDate immmer kleiner als das EndDate ist.
Und ich hoffe du machst keine Stringfrickelei beim SQL.
Bediengung soll sein: "Finde alle Datensätze, die früher oder am selben Tag wie der 11.02.2018 Angefangen haben und später oder am selben Tag geendet haben"
]
Hi,
nun - dann so:
SELECT * FROM tbl_JobDeviceTimes WHERE StartDate < '2018-02-12' AND EndDate >= '2018-02-11'
LG
Edit: GGf. dann noch mit dem Zusatz:
SELECT * FROM tbl_JobDeviceTimes WHERE StartDate < '2018-02-12' AND EndDate >= '2018-02-11' AND EndDate > StartDate