将日期插入SQLite数据库

将日期插入SQLite数据库,sqlite,delphi,delphi-xe4,Sqlite,Delphi,Delphi Xe4,作为参数化查询的一部分,我尝试从plannerCalendar中插入日期 Params.ParamByName('D').AsDate := JulianDateToDateTime(PlannerCalendar1.Date); 这是行不通的 有IDE吗 编辑: 即使是simpla日期插入也不起作用: with ClientdataSet1 do begin Close; CommandText :=''; CommandText :='INSERT INTO TLOG (DATE) VAL

作为参数化查询的一部分,我尝试从plannerCalendar中插入日期

Params.ParamByName('D').AsDate := JulianDateToDateTime(PlannerCalendar1.Date);
这是行不通的

有IDE吗

编辑:

即使是simpla日期插入也不起作用:

with ClientdataSet1 do
begin
Close;
CommandText :='';
CommandText :='INSERT INTO TLOG (DATE) VALUES (:D)';
Params.ParamByName('D').Value :=  Plannercalendar1.Date;
Execute;
我得到:

当我这样做时(只是为了测试):

插入日期

当我使用这个(看起来很有希望):

插入数据库的日期正常,但cxgrid会显示日期(如下所示):

更改参数也无济于事

值(julianday(:D)

如果我在数据库中将日期字段更改为CHAR,则:

DateToStr(Plannercalendar1.Date);

工作正常….

我将日期时间存储在SQL时间戳中:

SomeQuery.ParamByName('PARAM').AsSQLTimeStamp := DateTimeToSQLTimeStamp(Now);
SomeDateTime := SQLTimeStampToDateTime(SomeQuery.ParamByName('PARAM').AsSQLTimeStamp);
Data.SqlTimSt单元中查看此函数:


根据您之前的问题,我假设您使用的是TMS Planner。为什么使用JulianDateToDateTime?仅使用PlannerCalendar1.Date有什么问题?关于什么问题有什么想法?关于为什么您认为它不起作用?它不起作用。它适用于除SQLite之外的几乎所有数据库。如果我使用PlannerCalendar1.Date,则日期不正确t(1899)。这对我来说仍然没有多大意义。Delphi日期时间起源于1899年。您确定存储或读取的日期时间值的值不是0吗?您使用哪个库来访问SQLite3?它本身。最简单的方法可能是直接将julian日期作为实数使用,或将unix时间作为整数使用:
Params.ParamByName('D').AsInt64:=DateTimeToUnix(PlannerCalendar1.Date);
我试过:“Params.ParamByName('D')。AsSQLTimeStamp:=DateTimeToSQLTimeStamp(现在);”但我得到“远程错误:未实现功能”
DateToStr(Plannercalendar1.Date);
SomeQuery.ParamByName('PARAM').AsSQLTimeStamp := DateTimeToSQLTimeStamp(Now);
SomeDateTime := SQLTimeStampToDateTime(SomeQuery.ParamByName('PARAM').AsSQLTimeStamp);