我无法使用Delphi 10.3和FireDAC从SQLite数据库读取日期时间。作为最简单的示例,我使用sqlite创建一个示例数据库,如下所示:
.open Test.db
CREATE TABLE "TABLE1" ("Name"VarChar(16), "Time" datetime);
INSERT INTO Table1 (Name,Time) VALUES("Fred",time('now'));
然后
select * from Table1
按预期提供弗雷德| 16:52:57。
如果我生成一个FDConnection1和FDQuery1链接到数据源和DBgrid的Delphi程序,它将显示为“ Fred”,而不是时间。 FDquery1 asstring返回的值是“”,而asfloat是0。如果我尝试使用FireDAC Explorer工具查看数据库,它也无法读取时间值,但是我注意到它确实从某些示例数据库中读取了日期时间,因此显然可以正常工作。
谁能告诉我我所缺少的。谢谢
procedure TForm2.btnInsertRowClick(Sender: TObject);
const
sInsertRow = ' INSERT INTO Table1 (Name,time) VALUES(''Fred'',datetime(''now''))';
begin
FDConnection1.ExecSql(sInsertRow);
end;
Btw,总的来说,使用参数化的INSERT语句比上面的文字语句要好,但是在这里这并不实际,因为您要插入Sqlite返回的now
值而不是Delphi的now函数。 。