Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RusFAQ.ru: Базы данных SQL


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Базы данных SQL

Выпуск № 189
от 13.12.2006, 22:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 393, Экспертов: 40
В номере:Вопросов: 1, Ответов: 3


Вопрос № 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)
---------
Если дело заслуживает быть сделаным, то оно заслуживает чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Практикант)
Ответ отправлен: 08.12.2006, 09:59

Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, Юра!
Я не знаком с особенностями 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 )
В каждой записи выведутся три поля - год и сумма числовых полей соответствующих этому году.
С уважением.
Ответ отправил: Филатов Евгений Геннадьевич (статус: 5-ый класс)
Ответ отправлен: 08.12.2006, 15:40


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное