Thema: Delphi Termine anzeigen

Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#28

AW: Termine anzeigen

  Alt 23. Nov 2015, 14:57
Delphi-Quellcode:
select
    count(E.patientennummer) as Anzahl
from events E
where
   (E.patientennummer = 16)
   and
  (E.startzeit > '23.11.2015,11:00:00')
  and
  (E.FINISH <= '23.12.2015,15:00:00')
Dies entspräche in Delphi einer Abfrage in der Form
Delphi-Quellcode:
Termineqry.Close;
    Termineqry.ParamByName('Patientennummer').AsInteger := Patient1Qry.FieldByName('Patientennummer').AsInteger;
    Termineqry.ParamByName('Date').AsString := '23.11.2015 11:00:00';
    Termineqry.ParamByName('ENDDATUM').AsString := '23.12.2015 15:00:00');
    Termineqry.Open;
Für meine Begriffe sind die beiden Abfragen (technisch) nicht miteinander vergleichbar.

Sollte der Datentyp in der DB tatsächlich TimeStamp sein, so muss IBExpert hier also auf irgendeine Weise eine Typkonvertierung machen, deren Ergebnis dem erwarteten entspricht.

Now ist in Delphi vom Typ TDateTime und TDateTime wiederum von Typ Double.
Der ganzzahlige Anteil entspricht der den Tagen seit dem 30.12.1899, der Nachkommaanteil der Zeit nach Mitternacht.

Heute ist der 42331 (23.11.2015).
0.47917 entspricht 11:30 Uhr.
0.333334 entspricht 08:00 Uhr.
0.625 entspricht 15:00 Uhr.
42361 entspricht dem 23.12.2015.

Für vergleichbare Ergebnisse (hoffentlich) ohne Typkonvertierung müsste die Abfrage im IBExpert also lauten:

Delphi-Quellcode:
select
    count(E.patientennummer) as Anzahl
from events E
where
   (E.patientennummer = 16)
   and
  (E.startzeit > 42331.47917)
  and
  (E.FINISH <= 42361.625)
und unter Delphi
Delphi-Quellcode:
Termineqry.Close;
    Termineqry.ParamByName('Patientennummer').AsInteger := 16;
    Termineqry.ParamByName('Date').AsDateTime := 42331.47917;
    Termineqry.ParamByName('ENDDATUM').AsDateTime := 42361.625);
    Termineqry.Open;
Bei diesen beiden Abfragen erwarte ich identische Ergebnisse. Ist dem so?
Andernfalls würde ich den Fehler weniger in der Korrektheit der Abfrage, als in Konvertierungsproblemen bei den Datentypen, erwarten.

Die Umschiffung des Problemes mit mehrfachen Typkonvertierungen halte ich für suboptimal, das mag jetzt im konkreten Fall funktionieren, aber ob das jetzt und für alle Zeiten funktioniert? Auf eine derartige "Krücke" würde ich mich nicht verlassen.
  Mit Zitat antworten Zitat