Поиск SQl запросов по диапазону дат - PullRequest
2 голосов
/ 26 марта 2010

У меня есть таблица в базе данных Access 2007. Все поля имеют тип текста. Можно ли сделать следующее с помощью предложения where? Если так, то как?

  • ВЫБРАТЬ * из таблицы1 ГДЕ (дата столбца между 26 и 19 марта 2010 г.)
  • ВЫБРАТЬ * из таблицы1 ГДЕ (ColumnAge находится в диапазоне от 25 до 40)

Обычные операторы <<= не работают. </p>

Спасибо

Ответы [ 4 ]

6 голосов
/ 26 марта 2010
SELECT * from Table1 WHERE (CDATE(ColumnDate) BETWEEN #03/26/2010# AND #03/19/2010#)
SELECT * from Table1 WHERE (CINT(ColumnAge) between 25 and 40)

Даты представлены в Access между # символами в #MM/DD/YYYY#. Вы действительно должны хранить дату как поле даты:)

1 голос
/ 26 марта 2010

Попробуйте преобразовать ColumnDate в фактическую дату / время с помощью функции CDate. Преобразование в int можно сделать с помощью CInt, я думаю.

Я не пользуюсь Access, так что это просто здравый смысл.

1 голос
/ 26 марта 2010
SELECT * from Table1 WHERE ColumnDate between '2010-03-26' and '2010-03-19'
SELECT * from Table1 WHERE ColumnAge between 25 and 40

Я не пользуюсь Access, поэтому YMMV.

0 голосов
/ 30 ноября 2012

Мистер Дэвид-В-Фентон прав, говоря, что первый SELECT * from Table1 WHERE ColumnDate between '2010-03-26' and '2010-03-19' Марсело не работает, и неправильно указывает причину. Предложение некорректно из-за кавычек вокруг строковых представлений дат, формат даты довольно нормальный. Так что я бы предположил

SELECT * from Table1 WHERE CDATE(ColumnDate) between #2010-03-26# and #2010-03-19#

как правильное решение.

...