• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Поиск в интервале дат

  • Автор темы Баламут
  • Дата начала
Б

Баламут

В общем столкнулся со странной проблемой.

В AdoQuery строка SQL выглядит так:
[sql]SELECT * FROM Таблица where Дата >= :D 1 and Дата <= :D 2[/sql]

В коде пишу:

Adoquery1.Parameters[0].Value := DateTimePicker1.Date;
Adoquery1.Parameters[1].Value := DateTimePicker2.Date;
Adoquery1.ExecSQL;

Ошибок никаких не вылетает, но и результата никакого! Т.е. не возвращается ни одной записи, а должны! Хотя в предыдущем проекте такой подход прекрасно работал...

База локальная, Access
 
Б

Баламут

Нашел. Оказывается ядро JET понимает только буржуйский формат даты.
Т.е. пишем

Adoquery1.Parameters[0].Value := FormatDateTime('mm/dd/yyyy', DateTimePicker1.Date);

и все работает
 
?

????

запрос удобней переписать используя between. imho так лучше выглядит
 
Б

Баламут

В данном случае это не принципиально
 
B

Barmutik

Немного странно.. поидее наоборот должен работать во всех случах первый вариант .. а второй вариант только частность...
 
Б

Баламут

Сам удивляюсь, т.к. как я уже говорил, в предыдущих проектах таких казусов небыло. Но в справке по JETSQL ( файле JETSQL40.CHM, идет вместе с офисом) так и написано, что понимается ТОЛЬКО такой формат. Рыть надо
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!