Hallo,
das Problem, dass bei Deinem Beispiel falsche Werte herauskommen liegt daran:
Delphi-Quellcode:
const
DAY_IN_MS = 86400000;
Die Funktion Now liefert Dir einen Wert zurück, der die Tage seit dem 30.12.1899 angibt (Der Nachkommaanteil ist die Zeit, wobei 1 Std=1/24 enstpricht). Für Heute enstspricht der Now-Wert
40490. Wenn Du jetzt davon die Konstante DAY_IN_MS abziehst, bist Du irgendwo im Jahre -250.000.
Für Dein Beispiel genügt es, dass Du 1 Tag abziehst. Dies machst Du ja indirekt mit Deinem 2. Beispiel, da der 31.12.1899 den Wert 1 hat (ausserdem hast Du dir die Stringumwandlung gespart).
Delphi-Quellcode:
procedure foo;
var filter : String
const DAY24 = 1.0;
begin
if choise = myType24Hour then
begin
filter := 'Datum <= '+ FormatDateTime('yyyy-mm-dd hh:mm', (now - DAY24));
end;
end;