Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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'


Наверх

Титульная страница Поиск, карта сайта Написать письмо