Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.08;
Скачать: CL | DM;

Вниз

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

 
Эдуард   (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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.018 c
14-23320
Некто2002
2003-04-18 20:35
2003.05.08
XP, showmessage и


14-23281
Денис
2003-04-18 11:50
2003.05.08
Delphi + IE


1-23201
supersan
2003-04-18 15:42
2003.05.08
Глюк при показе формы


1-23067
Andrew_p
2003-04-25 18:38
2003.05.08
Как можно определить, является ли переменная путем к файлу


3-22989
Andy Verinov
2003-04-17 00:09
2003.05.08
Вешается BDE от большого числа запросов?