2014-02-04 3 views
1

Как часть параметризованного запроса, я пытаюсь вставить дату из планировщика.Вставить дату в базу данных SQLite

Params.ParamByName('D').AsDate := JulianDateToDateTime(PlannerCalendar1.Date); 

Это не сработает.

Любые ides?

EDIT:

Даже дата СИМПЛА вставка не будет работать:

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

я получаю:

enter image description here

Когда я делаю это (только для проверки):

CommandText :='INSERT INTO TLOG (DATE) VALUES (date(julianday("now", "LOCALTIME")))'; 

Дата вставляется.

Когда я использую это (выглядит многообещающим):

Params.ParamByName('D').Value := DateTimeToJulianDate(Plannercalendar1.Date); 

дата вставляется в базу данных в порядке, но cxgrid отображает дату забавную (пыльник):

Funny date display in the cxgrid

Смена Параметр не помогает.

VALUES (julianday(:D),

Если изменить поле DATE СИМВОЛУ в базе данных, то:

DateToStr(Plannercalendar1.Date); 

работает правильно ....

+0

Из ваших предыдущих вопросов, я предполагаю, что вы используете TMS Planner. Почему вы используете JulianDateToDateTime? Что случилось с использованием PlannerCalendar1.Date? –

+1

Любые идеи о чем? Почему вы думаете, что это не сработает? – TLama

+0

Не работает. Он работает практически со всеми базами данных, кроме SQLite. Если я поставлю Plannercalendar1.Date, дата будет неправильной (1899). – user3181689

ответ

0

хранить DateTime в SQL временные метки:

SomeQuery.ParamByName('PARAM').AsSQLTimeStamp := DateTimeToSQLTimeStamp(Now); 
SomeDateTime := SQLTimeStampToDateTime(SomeQuery.ParamByName('PARAM').AsSQLTimeStamp); 

Посмотрите на эту функцию От Данные.SqlTimSt единица:

DateTimeToSQLTimeStamp

SQLTimeStampToDateTime

+0

Я попытался: "Params.ParamByName ('D'). AsSQLTimeStamp: = DateTimeToSQLTimeStamp (Now);" но я получаю «Удаленная ошибка: функция не реализована» – user3181689

Смежные вопросы