Ja, hab mich mit DayOf statt (richtig) DateOf vertippt.
Leider liefert DateTimePicker1.Date bei Delphi6 z.B. immer noch den gesamten DateTime, sprich mit Uhrzeit, nur als TDate gecastet, ohne den Zeitwert ab zu schneiden.
Deshalb habe ich mir angewöhnt, wenn nur das Datum benötigt wird (mit 00:00:00 als Uhrzeit) immer mit DateOf(DateTimePicker1.DateTime) zu arbeiten und so auch nur das Datum zu erhalten.
Sonst erhalte ich noch eine undefinierte Uhrzeit mit am Datum. Dieser Zeitanteil ist bei einem DateTimePicker zumeißt (wenn nicht andersweitig von Hand gesetzt) immer die Uhrzeit vom Erstellungszeitpunkt des Pickers.
(Gerade noch mal getestet)
Somit würde bei bei einer Datenbank mit z.B. >= 16.11.2015 05:20:30 verglichen werden und man somit alle Datensätze zwischen 00:00:00 und 05:20:30 nicht erhalten.
Zum Thema '< Date+1':
Wenn man z.B. bei einem MS-SQLServer >= 16.11.2015 und <= 16.11.2015 angibt, bekommt man ... nichts zurück, auch wenn man diverse Einträge mit 16.11. hat.
Denn der SQL-Server würde bei Datenfeldtyp SMALDATETIME oder DATETIME die Datumsangaben für den Vergleich um 00:00:00 Uhr ergänzen.
Somit Vergleicht er >= 16.11.2015 00:00:00 und <= 16.11.2015 00:00:00.....
Deshalb ist hier >= 16.11.2015 und < 17.11.2015 (>= 16.11.2015 00:00:00 und < 17.11.2015 00:00:00)notwendig, damit auch alle Datensätze vom 16.11.2015 geliefert werden.
Wenn Dies natürlich nicht benötigt wird, sondern nur die Datensätze zwischen den Tagen, ohne die Tage selber, dann müsste es wieder anders lauten.
(Dies ist nur das Beispiel für MS-SQLServer, wie andere Datenbankssysteme einen solchen Vergleich handhaben kann davon abweichen)