Форум: "Базы";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];
ВнизКак получить номер квартала в БД Найти похожие ветки
← →
Эдуард (2003-04-11 11:42) [0]Есть ли стандартная UDF функция для Firebird
типа extract(month from <value>)
чтобы можно было вытянуть номер квартала?
Заранее благодарен.
← →
Johnmen (2003-04-11 11:47) [1]целая часть(№ месяца/3) + 1
← →
MsGuns (2003-04-11 11:59) [2]>Johnmen © (11.04.03 11:47)
>целая часть(№ месяца/3) + 1
Март - во втором квартале ?
← →
Johnmen (2003-04-11 12:04) [3]>MsGuns © (11.04.03 11:59)
А хрен его знает :)))))))
Но автор, думаю, сообразит...
← →
MsGuns (2003-04-11 12:07) [4]>Johnmen © (11.04.03 12:04)
целая часть( (№ месяца-1)/3) + 1
Надо полагать, что я и есть этот ХРЕН ;)))
← →
NickBat (2003-04-11 12:13) [5]прикольная задача, но решается так:
cast((extract(month from TF)/3)+0.333 as integer)
← →
MsGuns (2003-04-11 12:19) [6]>NickBat © (11.04.03 12:13)
>cast((extract(month from TF)/3)+0.333 as integer)
А что, AS INTEGER округляет, а не берет только целую часть ?
← →
NickBat (2003-04-11 12:25) [7]MsGuns © (11.04.03 12:19)
> А что, AS INTEGER округляет, а не берет только целую часть ?
В том-то и дело, что округляет.
← →
Эдуард (2003-04-11 15:03) [8]Скорее всего AS INTEGER берет только целую часть!
← →
Johnmen (2003-04-11 15:12) [9]>Эдуард (11.04.03 15:03)
>Скорее всего AS INTEGER берет только целую часть!
Нравиться гадать ?
>NickBat © (11.04.03 12:25)
← →
Эдуард (2003-04-11 15:19) [10]У меня берет только целую
← →
Johnmen (2003-04-11 15:22) [11]Врешь...:) Просто тебе так кажется...
← →
Эдуард (2003-04-11 15:27) [12]После
cast((extract(month from TF)/3)+0.333 as integer)
если первый или второй месяц, то выдаёт квартал 0
11 месяц -> 3 квартал
← →
GVK (2003-04-11 15:39) [13]>целая часть(№ месяца/3) + 1
Гм...
Может быть,
целая часть(№ месяца/4) + 1 ?
← →
Johnmen (2003-04-11 15:42) [14]>Эдуард (11.04.03 15:27)
А ты вообще ответы читаешь ? Уже сказали про поправку
MsGuns © (11.04.03 12:07)
← →
MsGuns (2003-04-11 15:43) [15]Не, я просто умиляюсь ;)))
Ну а тупо по интервалу дат нельзя выбирать нужный месяц, а ?
1-й квартал - BETWEEN (1.01.01,31.03.03)
2-й квартал - BETWEEN (1.04.01,30.06.03)
и т.д.
Или хоца быть крутым или че-то я не усеку ;)
← →
MsGuns (2003-04-11 15:45) [16]1-й квартал - BETWEEN (1.01.0 3,31.03.03)
2-й квартал - BETWEEN (1.04.0 3,30.06.03)
;))))))))
← →
Эдуард (2003-04-11 15:52) [17]Мне нужно не из интервала брать, а иметь в поле уже готовое число, чтобы потом по нему производить группирование.
А о какой поправке идет речь?
← →
Соловьев (2003-04-11 16:06) [18]не мучайся и пиши ХП.
← →
Johnmen (2003-04-11 16:09) [19]>Соловьев © (11.04.03 16:06)
>не мучайся и пиши ХП.
Если у человека туго с арифметикой, то ему надо объяснить, что такое ХП. :-)
← →
Эдуард (2003-04-11 16:09) [20]Что за ХП?
← →
NickBat (2003-04-11 16:10) [21]Это какой-то прикол! О чем спор?
см. NickBat © (11.04.03 12:13)
Специально проверял на Firebird - все двенадцать месяцев переводит в квартал правильно.
← →
Zz_ (2003-04-11 16:11) [22]Гы
← →
Max Zyuzin (2003-04-11 16:12) [23]>Эдуард (11.04.03 16:09)
Если не знаешь что такое ХП, то делай проще... вытаскиваешь при помощи своей фунцкии ну а дальше смотри в дельфи, или тебе надо что бы это все в запросе возвращалось??
← →
Max Zyuzin (2003-04-11 16:14) [24]>NickBat © (11.04.03 16:10)
Судя по всему легких путей не ищем :-) а вообще дааавно подмечено - чем проще вопрос - тем больше флейма.
← →
Соловьев (2003-04-11 16:14) [25]
> Если у человека туго с арифметикой, то ему надо объяснить,
> что такое ХП. :-)
>
>
>
>
> Эдуард (11.04.03 16:09)
> Что за ХП?
дествительно Гы-гы-гы. Но как-то грустно. :)))
← →
Эдуард (2003-04-11 16:16) [26]Очень прошу, можно код показать?
Заранее благодарен!
← →
NickBat (2003-04-11 16:20) [27]Блин, какой еще код тебе нужен?
Я его уже приводил.
Все работает!
Firebird 1.0.2 (Win32 Build)
← →
Max Zyuzin (2003-04-11 16:21) [28]>Эдуард (11.04.03 16:16)
Ты издеваешься или где? Чем тебе не подходит ответ NickBat © (11.04.03 12:13)??? А про то что такое ХП читайте в книгах или на сайте www.ibase.ru
← →
Эдуард (2003-04-11 17:51) [29]Хотите верьте, хотите нет!
Вот это не работает:
cast((extract(month from TF)/3)+0.333 as integer)
а вот это работает:
cast(((extract(month from TF)-1)/3)+1 as integer)
Спасибо за советы!
← →
NickBat (2003-04-11 18:00) [30]Какая у тебя версия FireBird?
У меня твоя строка работает с ошибками.
← →
NickBat (2003-04-14 11:04) [31]Сколько копий было сломано о том, чья строка правильная. А истина оказалась посередине!:))
Терзаемый мрачными предчувствиями решил проверить обе версии (свою и Эдуарда) на разных диалектах.
Результат:
Такая строка работает ТОЛЬКО для первого диалекта:
cast((extract(month from TF)/3)+0.333 as integer)
В третьем диалакте она выдает бред. Покапавшись обнаружил, что действие вида:
12/10 под первым диалектом сервер выдает как 1,2 (вещественное)
12/10 под третьим диалектом - 1 (целое)
Причем операция cast(xx as integer) - округляет по правилам как в первом, так и в третьем диалекте.
То есть различие в операции деления: для первого диалекта возвращается вещественное число с дробной частью, а в третьем - целое.
Никогда не думал, что различие в диалектах может быть таким существенным. Надо будет почитать литературу. :)))
← →
Эдуард (2003-04-15 11:38) [32]Благодарю за интерес проявленный к моей проблеме!
Хотя для меня это тоже остаётся загадкой!
Видно правильно, и мне тоже надо почитать литературу!
← →
kaif (2003-04-15 12:26) [33]А я написал ХП, которая генерит набор вида
ADATE, AWEEKDAY, AMONTHDAY, AMONTH, AYEAR, AQUARTAL
для заданного промежутка дат.
Затем объединяю в SELECT-е набор, генерируемый этой процедурой с таблицей-накопителем данных по подю дата. И группирую всласть, как угодно!
Работает очень быстро и не надо думать, как всякие CAST в GROUP BY засовывать.
← →
Эдуард (2003-04-17 12:51) [34]Интересно! Может кинешь на мэил, если не в облом?
← →
karl21 (2003-04-17 13:18) [35]floor((month(FieldDate) + 2) /3)
и всё
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.01 c