Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2011, 22:20   #1
Jene4ka
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 75
По умолчанию Работа с датой, параметрический запрос

Здравствуйте!
Подскажите, пожалуйста, нужно составить запрос параметрический, чтобы вводить дату и выводились все записи с этой датой.Но проблема в том, что указывать нужно только дату, а в таблице поле имеет еще и время, и поэтому запрос не работает. Как вывести все записи указанной даты с любым временем?
Jene4ka вне форума Ответить с цитированием
Старый 15.03.2011, 22:23   #2
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Напрямую зависит от конкретной рассматриваемой СУБД.
mss вне форума Ответить с цитированием
Старый 15.03.2011, 22:39   #3
Jene4ka
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 75
По умолчанию

СУБД Access
Jene4ka вне форума Ответить с цитированием
Старый 15.03.2011, 22:45   #4
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Два параметра: один на начало дня, а другой на окончание того же дня с ключевым словом BETWEEN
ReportCube вне форума Ответить с цитированием
Старый 15.03.2011, 22:53   #5
Jene4ka
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 75
По умолчанию

datetimepicker.datetime+00:00:00 или как?
Jene4ka вне форума Ответить с цитированием
Старый 15.03.2011, 22:54   #6
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Универсальное решение:

DateFrom := StrToDate('15.03.11');
DateTo := DateFrom + 1;

Текст парам.запроса:

bla-bla-bla WHERE DateTimeField >= :DateFromParam and DateTimeField < :DateToParam
mss вне форума Ответить с цитированием
Старый 15.03.2011, 22:54   #7
Jene4ka
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 75
По умолчанию

день выбирается через datetimepicker, и как это записать? например, начало дня, datetimepicker.datetime+00:00:00 или как?
Jene4ka вне форума Ответить с цитированием
Старый 15.03.2011, 23:06   #8
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

MyQuery.SQL.Text := 'bla-bla-bla WHERE DateTimeField >= :DateFromParam and DateTimeField < :DateToParam';

DateFromParam := DateTimePicker.Date;
DateToParam := DateFromParam + 1;
MyQuery.ParamByName('DateFromParam' ).Value := DateFromParam;
MyQuery.ParamByName('DateToParam'). Value := DateToParam;
mss вне форума Ответить с цитированием
Старый 15.03.2011, 23:08   #9
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Я использую следующее: DateUtils.RecodeTime(DateTime, 0, 0, 0, 0) и DateUtils.RecodeTime(DateTime, 23, 59, 59, 0) соответственно.
Миллисекундами умышленно пренебрегаю. Простая добавка одного дня, к сожалению, не является удачным решением, так как в период попадут данные следующего дня, если время в дате будет отсутствовать (для других БД это вполне может быть, равно как и для Вашего случая при прямой записи в БД даты с очищением времени)
ReportCube вне форума Ответить с цитированием
Старый 15.03.2011, 23:13   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от ReportCube Посмотреть сообщение
Простая добавка одного дня, к сожалению, не является удачным решением, так как в период попадут данные следующего дня, если время в дате будет отсутствовать
Почему, если в условии стоит строго меньше? Ну и пусть себе на здоровье в данных следующего дня отсутствует время
Jene4ka а это из принципа один и тот же топик в течении 20 минут ПЯТЬ раз создать на форуме?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 15.03.2011 в 23:17.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Параметрический запрос Tomatos БД в Delphi 26 24.11.2010 13:09