我有以下脚本,从来没有检索火鸟/ 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