Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Фильтр по дате [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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо