2015-03-19 3 views
0

У меня есть система баз данных, которая позволяет пользователям создавать записи. При отправке записи в таблицу она фиксирует текущую дату и время.Фильтровать записи базы данных по диапазону дат

У меня есть форма, которая позволяет пользователям фильтровать/искать записи.

Каков наилучший способ разрешить фильтрацию дат записей. Как StartDate EndDate?

Ниже приведено то, что я делаю, когда записываю DateTime для записи.

FieldByName ('logged_dt'). AsDateTime: = now;

+0

Вы сохраняете даты в БД в текстовой форме? –

+0

ive отредактировал мой вопрос, я ошибся в том, что я делаю, когда записываю дату/время – Sharpie

+0

Я откат вашего редактирования, потому что сообщение об ошибке, которое вы получаете сейчас, - это другая проблема. Вы не можете внести существенного изменения в вопрос, который изменит весь смысл после того, как вы получили ответы на него. Если у вас появилась новая проблема, создайте новый вопрос и спросите об этом. Я ответил на заданный вами вопрос, а именно, как фильтровать записи по диапазону дат. –

ответ

2

Обычный способ сделать это с помощью SQL с параметрами и WHERE пункт:

Query.SQL.Clear; 
Query.SQL.Add('SELECT ColumnA, ColumnB, DateCol'); 
Query.SQL.Add('FROM TableA'); 
Query.SQL.Add('WHERE DateCol >= :StartDate'); 
Query.SQL.Add('AND DateCol <= :EndDate'); 
Query.ParamByName('StartDate').AsDateTime := StartDateYouWant; 
Query.ParamByName('EndDate').AsDateTime := EndDateYouWant; 
Query.Open; 
if Query.IsEmpty then 
    ShowMessage('No records found in that range') 
else 
    // Do whatever with the rows found 

Альтернативный синтаксис использовать BETWEEN, который изменит положение WHERE к

Query.SQL.Add('WHERE DateCol BETWEEN :StartDate AND :EndDate'); 

Я столкнулся с проблемами с использованием BETWEEN с столбцами DATETIME из-за временной части значения и (по собственному опыту) с использованием >= (GTE) иОператоры(LTE) работают более легко. Ваш пробег может отличаться, поэтому вы должны проверить и решить, какие из них лучше всего подходят для вашей конкретной СУБД и данных.

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