Консультация № 66040
08.12.2006, 04:38
0.00 руб.
0 3 3
Всем привет.
В таблице бд есть поле типа DATE. Оно как водится содержит дату, месяц и год. В поисковике который я пишу запросы выборки формируются ТОЛЬКО по году. Вопрос, возможно ли так построить запрос к БД по полю типа DATE, чтобы выборка производилась только по значению года, а значения даты и месяца могли бы быть произвольными?
Среда Borland C++ Builder 6.0,
БД FireBird 1.5.
Буду признателен за любую помощь.

Обсуждение

Неизвестный
08.12.2006, 06:48
общий
это ответ
Здравствуйте, Юра!

Вот так:
SELECT EXTRACT(YEAR FROM DATE_FIELD) AS YEARVALUE FROM T1

вместо YEAR можно использовать MONTH,DAY,WEEKDAY,YEARDAY
Неизвестный
08.12.2006, 09:59
общий
это ответ
Здравствуйте, Юра!

В штатных UDF для Firebird есть функция f_Year и запрос строиться так:
Select f_Year(date) from table;

Там есть и другие функции работы с датами (см. каталог Firebird/UDF)
Неизвестный
08.12.2006, 15:40
общий
это ответ
Здравствуйте, Юра!
Я не знаком с особенностями FireBird, поэтому дам ответ по SQL.
Для последующей выборки значений из списка подойдет запрос:
select year ( DAT ) as Pole from Baza order by year ( DAT ) group by year ( DAT )
В данном запросе выведется список годов по возрастанию с одной записью за каждый год, т.е. 2001 2002 2003 и т.д.
Для получения итоговых значений за каждый год для вывода в отчет запрос немного поменяется:
select year ( DAT ) as Pole , sum ( Числовое_поле1 ) as Summa1 , sum ( Числовое_поле2 ) as Summa2 from Baza order by year ( DAT ) group by year ( DAT )
В каждой записи выведутся три поля - год и сумма числовых полей соответствующих этому году.
С уважением.
Форма ответа