Wie vergleichen Firebird TimeStamp und Delphi DateTime?

Ich habe Folgendes Skript, das nie abrufen alle Daten, die seit TimeStamp-Datentyp in Firebird/Interbase ist nicht DateTime (*)

Wie soll ich es beheben ?? TX.

 with DMApp.qryValidPeriod_ do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select P.* from PERIOD P, FISCAL_YR F');    
    SQL.Add('where');
    SQL.Add('P.FISCAL_YR_ID = F.FISCAL_YR_ID and');     
    SQL.Add('F.ENTITY_DB_ID = :PRIMARY_DB_ID and');     
    SQL.Add('F.FISCAL_YR_ID = :CURR_FY_ID and');        
    SQL.Add(':pTranDate BETWEEN P.BEG_PERIOD and P.END_PERIOD');

    ParamByName('pTranDate').AsDateTime :=  sBATCH_DATE; 

//BEG_PERIOD und END_PERIOD sind TimeStamp-Datentyp wie "2010-11-09 12:00'
//parameter return-Datentyp wie "2010-11-09'


(*) Ein Zeitstempel ist eine Spalte Datentyp verfügbar in Firebird/Interbase/SQL Server..., das hilft, um die Datenintegrität sicherzustellen. Zeitstempel werden automatisch jedes mal aktualisiert, wenn Sie eine Zeile mit einer timestamp-Spalte eingefügt oder aktualisiert wird. Werte in timestamp-Spalten sind nicht datetime-Daten, aber binary(8) varbinary(8) - Daten. Der timestamp-Datentyp hat keinen Bezug zu dem system Zeit, es ist einfach ein monoton steigender Zähler, deren Werte immer innerhalb einer Datenbank eindeutig sein (so dass es im Grunde eine eindeutige Zufallszahl.)

  • Ist der TimeStamp in diesem Beispiel Ihre eigenen benutzerdefinierten Datentyp? Weil wir arbeiten sehr viel mit standart TIMESTAMP-Datentyp und es funktioniert gut, wenn im Vergleich zu query-Parametern.
  • Nein, es ist nicht. Es ist Firebird 2.5. Wie oben gezeigt, die Tasche nie wieder irgendwelche Daten - (da der Wert des Parameters pTranDate ist der Datum-format, wie im debugger)
  • Code sollte normalerweise funktionieren. Der Grund, warum die Abfrage gibt keine Ergebnisse vielleicht etwas anders. Überprüfen Sie Ihre anderen Parametern.
  • Beispiel: Delphi-put '2010-11-09' als der Wert der pTranDate parameter. Mit diesem Wert das Skript keine Daten zurückgibt. Wenn ich buchstäblich ersetzen Sie diesen Parameterwert mit '2010-11-09 00:00', dann das script die Daten liefert.
  • '2010-11-09' ist ein string-Wert, wie gehen Sie es an die parameter?
  • '2010-11-09' ist ein string-Wert, wie gehen Sie es an die parameter? .. mit dem sql-editor kommt mit anydac. Nun alles eingerichtet ist, so dass mein Skript gibt Werte, wie es ist. Ich war mixing-Parameter zwischen den Datenbanken, die ich mit der Anydac multi-Datenbank-Verbindung. Vielen Dank für Ihre Hilfe. Sie hatten Recht, ich sollte überprüft haben, die Parameter zweimal.

InformationsquelleAutor volvox | 2010-11-11
Schreibe einen Kommentar