Выборка по полям с форматом даты
DM.QueryBirthday.SQL.Add('Select * FROM MainTable Where Birthday=:fff ');
DM.QueryBirthday.Active:=true;
По время создания программы создал параметр fff, тип ftDateTime,
value = 05.05.1988 (запись с такой датой рождения есть в БД).
делаю запуск программы - выдаётся пустой набор. ПОЧЕМУ ? !
HELP,Плз !!!
Вообще цель сделать выборку между двумя датами. Но сначала надо разобраться с этим...
Выдаёт синтаксическую ошибку ... ((
Кстати, необязательно. SerMax, посмотри документацию по SQL СУБД, которую используешь. В SQL Server, например, дата пишется в кавычках. Решетки - вроде формат Access. А вообще, странно, если у параметра указано ftDateTime, по идее должно автоматом конвертится в нужный формат...
Select * From MainTable
Where Birthday BETWEEN #05.05.1988# AND #06.05.2000#
синтаксическая ошибка...с SQL мало работал, только вот что понадобится - изучу. Даже разницы в SQL СУБД разных не знаю (
Where Birthday BETWEEN '05.05.1988' AND '06.05.2000'
Ничего не помогает (
Ничего не помогает (
Ну, товарищ, мы же тоже не знаем, какое БД у тебя и какой формат даты установлен в системных настройках. И, наверное, всё-таки правильнее DateTimeToStr(EncodeDateTime()) использовать...
Where Birthday BETWEEN #05.05.1988# AND #06.05.2000#
синтаксическая ошибка...с SQL мало работал, только вот что понадобится - изучу. Даже разницы в SQL СУБД разных не знаю (
Where Birthday BETWEEN #05/05/1988# AND #05/06/2000#
Вот так пойдет?!!!
Формат даты: #mm/dd/yyyy#
Where Birthday BETWEEN #05/05/1988# AND #05/06/2000#
Вот так пойдет?!!!
Формат даты: #mm/dd/yyyy#
Заработало ! Формат даты "краткий" mm.dd.yyyy.
Но этот вариант заработал. Всем спасибо за ответы!
Но этот вариант заработал. Всем спасибо за ответы!
Ура, товарисчи!!:D
Либо даты передавать, как параметры, тогда компонента сама преабразует к double и корректно сравнит, либо самому привести дату к double.
Для TDataSet в Delphi:
1: q.commandtext:='Select * From MainTable Where Birthday BETWEEN :startDate and :endDate';
q.Parameters.ParamByName('startDate').Value:=startDate;
q.Parameters.ParamByName('endDate').Value:=endDate;
q.prepared:=true;
q.active:=true;
2: q.commandtext:='Select * From MainTable Where Birthday BETWEEN '+floattostr(startDate)+' and '+floattostr(endDate);
где startDate и endDate - TdateTime.