将日期插入SQLite数据库
作为参数化查询的一部分,我尝试从plannerCalendar中插入日期将日期插入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
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);