![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL запрос к полю даты [D6, Paradox]
Popov Oleg © (2005-01-19 08:01:00)Уважаемые Мастера ! Есть таблица с одним полем формата Date.
как с помошью запроса выбрать данные только за указанный месяц и год если в поле дата указана полностью ? (F.e. 10.01.2005).
Если соединять из двух TextEdit естественно ругается на ошибку
типов....:
'SELECT * from Zak WHERE MesGod like "' + M.Text + '.' + Y.Text + '"'
Max Zyuzin (2005-01-19 11:29:00) [1]>Popov Oleg (19.01.05 09:34)
К совету msguns © (19.01.05 11:23) [7] добавлю, что для удобства я обычно всегда использую для ввода даты и время DateTimePicker - это и симпатичнее выглядит, а так же не надо думать какой формат даты и время стоит на компьютере пользователя, вот.
msguns (2005-01-19 11:23:00) [2]>Popov Oleg (19.01.05 09:34) [4]
with Query do
try
SQL.Text := 'SELECT * from Zak WHERE (MesGod BETWEEN :d1 AND :d2'
ParamByName('d1').Clear;
ParamByName('d2').Clear;
if StrToDateDef(DT1.Text,0)>0 then
ParamByName('d1').AsDate := StrToDate(DT1.Text);
if StrToDateDef(DT2.Text,0)>0 then
ParamByName('d2').AsDate := StrToDate(DT2.Text);
Open;
except
ShowMessage('Ошибка запроса');
exit;
end;
sniknik (2005-01-19 10:59:00) [3]ошибка в том что ты путаеш типы, дату со строкой, параметр и параметр только типа дата енадо использовать.
Yurij-7 (2005-01-19 10:33:00) [4]Я думаю что значения даты с TDataEdit передавать в запрос надо через параметры.
Popov Oleg (2005-01-19 09:34:00) [5]Подскажите в чем ошибка
'SELECT * from Zak WHERE (MesGod BETWEEN ' + DT1.Text + ' AND ' + DT2.Text + ')'
DT1.Tex, DT2.Text - это TDataEdit компонент
sniknik (2005-01-19 08:27:00) [6]Leshiy © (19.01.05 08:19) [2]
при использовании будет тот же перебор, индекс (если есть) зря создавали...
Leshiy (2005-01-19 08:19:00) [7]extract(Month from MesGod)
extract(Year from MesGod)
sniknik (2005-01-19 08:16:00) [8]во порвых параметры, делай через них, во вторых период задавай а не сравнение, с началом и концом месяца, это быстрее перебора (что у тебя).
'SELECT * from Zak WHERE MesGod BETWEEN :DatBeg AND :DatEnd'