![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фильтр по дате [D6, Paradox]
kalishenko © (2004-04-14 13:20:00)Как составить фильтр по дате так, чтобы отбирались данные по конкретному месяцу?
kalishenko (2004-04-14 14:07:00) [1]Все всем спасибо за сплоченность. Sniknik был прав ("date зарезервированное слово. в чистом виде его так запрос не вставить"). Запрос выглядит так:
select *
from info
where (extract(month from info.'date') = 04)
Осталось добавить года - это уже проще пареной репы.
Еще раз спасибо.
Vlad (2004-04-14 14:01:00) [2]
> Все равно ругается. Что не так?
Матом чтоли ругается ?
Текст ошибки в студию
kalishenko (2004-04-14 14:00:00) [3]>>а это ничего что запрос выберет не конкретный месяц а сквозной за все годы? и индекс не используя (если есть), тоесть тормоза в программе закладываются изначально.
C годами нет проблем - если отловлю месяцы, то и отловлю и годы. А индексов нет.
sniknik (2004-04-14 13:56:00) [4]date зарезервированное слово. в чистом виде его так запрос не вставить.
а это ничего что запрос выберет не конкретный месяц а сквозной за все годы? и индекс не используя (если есть), тоесть тормоза в программе закладываются изначально.
kalishenko (2004-04-14 13:51:00) [5]Все равно ругается. Что не так?
select *
from info
where (extract(month from date) = 4),
где date - поле типа TDateTime
4 - апрель-месяц
Anatoly Podgoretsky (2004-04-14 13:49:00) [6]Если от фильтра не хочешь отказываться, то тогда динамически сформировать две даты 1.MM.YYYY и Last.MM.YYYY, затем фильтр следующего вида D>=D1 and D<=D2, но запрос оптимальнее, при том параметрический
Vlad (2004-04-14 13:45:00) [7]
> kalishenko (14.04.04 13:39) [4]
Вроде в LocalSql была функция Extract
т.е. что-то вроде
SELECT * from Table
WHERE (EXTRACT(MONTH FROM DateField) = 1)
Будет январь за все года.
Anatoly Podgoretsky (2004-04-14 13:45:00) [8]Тогда ункция Extract два раза - на нужный месяц и на нужный год, от фильтра отказаться в пользу запроса.
Альтернативой использование метода OnFilterRecord
kalishenko (2004-04-14 13:43:00) [9]>>where date like '__.12%' --12 номер месяца
По-моему опреатор like работает только со строками.
>>А в каком году или эти данные за несколько лет?
К примеру, текущего года.
Anatoly Podgoretsky (2004-04-14 13:43:00) [10]sniknik © (14.04.04 13:42) [5]
А он молчит про годы, наверно ответ не нужен.
sniknik (2004-04-14 13:42:00) [11]а больше/меньше нельзя поставить? больше одного значения(начало месяца) и меньше другого(начало следующего).
kalishenko (2004-04-14 13:39:00) [12]Да нет, не понимает. Возможно ли вообще применение функций в фильтрах?
Anatoly Podgoretsky (2004-04-14 13:30:00) [13]А в каком году или эти данные за несколько лет?
human (2004-04-14 13:30:00) [14]попробуй так
select *
from table
where date like '__.12%' --12 номер месяца
serge35 (2004-04-14 13:23:00) [15]select * from a
where substr(a.date,4,2) = 12 (номер месяца)
Я провда не уверен, что Paradox поймет substr.