Вопрос № 66040: Всем привет.
В таблице бд есть поле типа DATE. Оно как водится содержит дату, месяц и год. В поисковике который я пишу запросы выборки формируются ТОЛЬКО по году. Вопрос, возможно ли так построить запрос к БД по полю типа DATE, чтобы выборка прои...
Вопрос № 66.040
Всем привет.
В таблице бд есть поле типа DATE. Оно как водится содержит дату, месяц и год. В поисковике который я пишу запросы выборки формируются ТОЛЬКО по году. Вопрос, возможно ли так построить запрос к БД по полю типа DATE, чтобы выборка производилась только по значению года, а значения даты и месяца могли бы быть произвольными?
Среда Borland C++ Builder 6.0,
БД FireBird 1.5.
Буду признателен за любую помощь.
Отправлен: 08.12.2006, 04:38
Вопрос задал: Юра (статус: 2-ой класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Синельников Сергей
Здравствуйте, Юра!
Вот так:
SELECT EXTRACT(YEAR FROM DATE_FIELD) AS YEARVALUE FROM T1
вместо YEAR можно использовать MONTH,DAY,WEEKDAY,YEARDAY
Ответ отправил: Синельников Сергей (статус: 1-ый класс)
Ответ отправлен: 08.12.2006, 06:48
Отвечает: Архангельский Андрей Германович
Здравствуйте, Юра!
В штатных UDF для Firebird есть функция f_Year и запрос строиться так:
Select f_Year(date) from table;
Там есть и другие функции работы с датами (см. каталог Firebird/UDF)
--------- Если дело заслуживает быть сделаным, то оно заслуживает чтобы его сделали ХОРОШО
Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, Юра!
Я не знаком с особенностями 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 )
В каждой записи выведутся три поля - год и сумма числовых полей соответствующих этому году.
С уважением.