Laden...

DateTime-Feld nur mit Datum vergleichen!?

Erstellt von Thron vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.842 Views
T
Thron Themenstarter:in
63 Beiträge seit 2017
vor 6 Jahren
DateTime-Feld nur mit Datum vergleichen!?

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

1.029 Beiträge seit 2010
vor 6 Jahren

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.

T
Thron Themenstarter:in
63 Beiträge seit 2017
vor 6 Jahren

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ß

1.029 Beiträge seit 2010
vor 6 Jahren

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.

F
10.010 Beiträge seit 2004
vor 6 Jahren

Und ich hoffe du machst keine Stringfrickelei beim SQL.

T
Thron Themenstarter:in
63 Beiträge seit 2017
vor 6 Jahren

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"

]

1.029 Beiträge seit 2010
vor 6 Jahren

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