Как работать с полями типа DateTime?
Query1.sql.text:='Select * From TableName Where (Date>:D1) and (Date<:D2)'; Query1.params.parsSql(Query1.sql.text, true); Query1.params.parambyname('d1').value:=Stringtodatetime('09.10.2002'); Query1.params.parambyname('d2').value:=Stringtodatetime('09.11.2002'); Query1.active:=true;
Возможно применение следующей квери:
SELECT Date from TableName where beetwen '01/01/2002' and '31/01/2002'
В этом коде 2 неточности, которые могут стать потенциальными ошибками, именно по этому я рекомендую использовать код с параметрами. Итак:
1) Не все SQL сервера понимают строки как нечто в одинарных кавычках, некоторые требуют двойных кавычек, некоторые сервера могут быть настроены на одинарные ил двойные кавычки. Если дату передавать как параметер, то конечную кверю будет строить сам сервер, и он поставит те кавычки, которые нужны.
2) Где гарантия что формат даты одинаковый на компьютере с программой и компьютере с базой данных? У меня может стоять на клиенте русская винда с русскими настройками и '2/9/2002' будет интерпретироваться как "2 сентября", а на компьютере с базой данных стоит регионарный стандарт для Америки и эта же дата будет означать "9 февраля". (Про разделители полей даты я уже молчу). В этом случае так же параметры работают корректнее - серверу передаётся дата, а он делает кверю в соответствии со своими регионарными стандартами.
Взято с Vingrad.ru https://forum.vingrad.ru