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

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

Как получить номер квартала в БД


Страницы:   1 2

Эдуард ©   (2003-04-11 11:42:00) 

Есть ли стандартная UDF функция для Firebird
типа extract(month from <value>)
чтобы можно было вытянуть номер квартала?

Заранее благодарен.


karl21   (2003-04-17 13:18:00) [1]

floor((month(FieldDate) + 2) /3)
и всё


Эдуард   (2003-04-17 12:51:00) [2]

Интересно! Может кинешь на мэил, если не в облом?


kaif   (2003-04-15 12:26:00) [3]

А я написал ХП, которая генерит набор вида
ADATE, AWEEKDAY, AMONTHDAY, AMONTH, AYEAR, AQUARTAL
для заданного промежутка дат.
Затем объединяю в SELECT-е набор, генерируемый этой процедурой с таблицей-накопителем данных по подю дата. И группирую всласть, как угодно!
Работает очень быстро и не надо думать, как всякие CAST в GROUP BY засовывать.


Эдуард   (2003-04-15 11:38:00) [4]

Благодарю за интерес проявленный к моей проблеме!
Хотя для меня это тоже остаётся загадкой!
Видно правильно, и мне тоже надо почитать литературу!


NickBat   (2003-04-14 11:04:00) [5]

Сколько копий было сломано о том, чья строка правильная. А истина оказалась посередине!:))
Терзаемый мрачными предчувствиями решил проверить обе версии (свою и Эдуарда) на разных диалектах.
Результат:
Такая строка работает ТОЛЬКО для первого диалекта:
cast((extract(month from TF)/3)+0.333 as integer)
В третьем диалакте она выдает бред. Покапавшись обнаружил, что действие вида:
12/10 под первым диалектом сервер выдает как 1,2 (вещественное)
12/10 под третьим диалектом - 1 (целое)

Причем операция cast(xx as integer) - округляет по правилам как в первом, так и в третьем диалекте.
То есть различие в операции деления: для первого диалекта возвращается вещественное число с дробной частью, а в третьем - целое.
Никогда не думал, что различие в диалектах может быть таким существенным. Надо будет почитать литературу. :)))


NickBat   (2003-04-11 18:00:00) [6]

Какая у тебя версия FireBird?
У меня твоя строка работает с ошибками.


Эдуард   (2003-04-11 17:51:00) [7]

Хотите верьте, хотите нет!

Вот это не работает:

cast((extract(month from TF)/3)+0.333 as integer)

а вот это работает:

cast(((extract(month from TF)-1)/3)+1 as integer)

Спасибо за советы!


Max Zyuzin   (2003-04-11 16:21:00) [8]

>Эдуард (11.04.03 16:16)
Ты издеваешься или где? Чем тебе не подходит ответ NickBat © (11.04.03 12:13)??? А про то что такое ХП читайте в книгах или на сайте www.ibase.ru


NickBat   (2003-04-11 16:20:00) [9]

Блин, какой еще код тебе нужен?
Я его уже приводил.
Все работает!
Firebird 1.0.2 (Win32 Build)


Эдуард   (2003-04-11 16:16:00) [10]

Очень прошу, можно код показать?
Заранее благодарен!


Соловьев   (2003-04-11 16:14:00) [11]


> Если у человека туго с арифметикой, то ему надо объяснить,
> что такое ХП. :-)
>
>
>
>
> Эдуард (11.04.03 16:09)
> Что за ХП?

дествительно Гы-гы-гы. Но как-то грустно. :)))


Max Zyuzin   (2003-04-11 16:14:00) [12]

>NickBat © (11.04.03 16:10)
Судя по всему легких путей не ищем :-) а вообще дааавно подмечено - чем проще вопрос - тем больше флейма.


Max Zyuzin   (2003-04-11 16:12:00) [13]

>Эдуард (11.04.03 16:09)
Если не знаешь что такое ХП, то делай проще... вытаскиваешь при помощи своей фунцкии ну а дальше смотри в дельфи, или тебе надо что бы это все в запросе возвращалось??


Zz_   (2003-04-11 16:11:00) [14]

Гы


NickBat   (2003-04-11 16:10:00) [15]

Это какой-то прикол! О чем спор?
см. NickBat © (11.04.03 12:13)
Специально проверял на Firebird - все двенадцать месяцев переводит в квартал правильно.


Эдуард   (2003-04-11 16:09:00) [16]

Что за ХП?


Johnmen   (2003-04-11 16:09:00) [17]

>Соловьев © (11.04.03 16:06)
>не мучайся и пиши ХП.

Если у человека туго с арифметикой, то ему надо объяснить, что такое ХП. :-)


Соловьев   (2003-04-11 16:06:00) [18]

не мучайся и пиши ХП.


Эдуард   (2003-04-11 15:52:00) [19]

Мне нужно не из интервала брать, а иметь в поле уже готовое число, чтобы потом по нему производить группирование.
А о какой поправке идет речь?


MsGuns   (2003-04-11 15:45:00) [20]

1-й квартал - BETWEEN (1.01.0 3,31.03.03)
2-й квартал - BETWEEN (1.04.0 3,30.06.03)

;))))))))


Страницы:   1 2

Наверх

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