我有以下腳本,從來沒有檢索火鳥/ Interbase的,因爲時間戳數據類型的任何數據不DATETIME(*)如何比較Firebird TimeStamp和Delphi DateTime?
我應該怎麼解決這個問題? 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和END_PERIOD是時間戳數據類型,諸如,如 '2010-11-09'
'2010-11-09 12:00' //參數返回的數據類型
(*)時間戳是Firebird/Interbase/SQL Server中可用的列數據類型...有助於確保數據完整性。每次插入或更新包含時間戳列的行時,時間戳都會自動更新。時間戳列中的值不是日期時間數據,而是二進制(8)varbinary(8)數據。 timestamp數據類型與系統時間無關,它只是一個單調遞增的計數器,它的值在數據庫中始終是唯一的(使其基本上是一個唯一的隨機數。)
TimeStamp在這個例子中是你自己的自定義數據類型嗎?因爲我們使用非常規的TIMESTAMP數據類型進行了大量工作,與查詢參數相比,它工作得很好。 – 2010-11-11 06:44:19
不,不是。它是火鳥2.5。如上所示,腳本從不返回任何數據 - (因爲參數pTranDate的值僅在調試器中看到日期格式) – volvox 2010-11-11 13:10:28
該代碼應正常工作。查詢返回沒有結果的原因可能會有所不同。檢查你的其他參數。 – 2010-11-11 13:12:57