|
[Informix] Квартал
|
|||
---|---|---|---|
#18+
Здравствуйте! В данное время мне приходится выполнять миграцию программного комплекса с MSSQL на Informix. Есть представление в MSSQL (view), полями которого, в частности, являются день, месяц, год, день недели и квартал, получаемые из одного поля таблицы (типа datetime) с помощью функции datepart. При переводе этого представления в Informix я использую функции year, month, weekday и т.д. для получения года, месяца и т.д. Но! Функции quarter я в Informix не нашел... Вопрос: как мне получить из даты квартал? (аналогично, как это делается в MSSQL с помощью функции datepart(quarter, SomeDateTimeField)) Спасибо... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2002, 17:32 |
|
[Informix] Квартал
|
|||
---|---|---|---|
#18+
CREATE PROCEDURE quarter (aDatetime DATETIME YEAR TO SECOND) RETURNING INT: CASE WHEN MONTH(aDatetime) BETWEEN 1 AND 3 THEN RETURN 1 WHEN MONTH(aDatetime) BETWEEN 4 AND 6 THEN RETURN 2 WHEN MONTH(aDatetime) BETWEEN 7 AND 9 THEN RETURN 3 ELSE RETURN 4 END; END PROCEDURE; ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2002, 11:35 |
|
[Informix] Квартал
|
|||
---|---|---|---|
#18+
Ага, т.е. написать свою udf... Спасибо... Кстати, предложенный вариант не прошел, пришлось заменить case на if - elif - else... PS: Вдруг кому-нибудь понадобится: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2002, 19:01 |
|
[Informix] Квартал
|
|||
---|---|---|---|
#18+
Можно и более изящно :) TRUNC((MONTH(TODAY)-0.5)/3)+1 Quarters, -- Quarters (by Informix FAQ) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2003, 18:00 |
|
[Informix] Квартал
|
|||
---|---|---|---|
#18+
Вот еще один способ (процедура): -------------------------------------- -- findout the Quarter (i.e. 1,2,3,4) -- for a given date -- (by IIUG) -------------------------------------- CREATE PROCEDURE quarter_number(d DATE) RETURNING INTEGER; RETURN TRUNC((MONTH(d) + 2) / 3); END PROCEDURE; ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2003, 18:04 |
|
[Informix] Квартал
|
|||
---|---|---|---|
#18+
Есть представление в MSSQL (view), полями которого, в частности, являются день, месяц, год, день недели и квартал, получаемые из одного поля таблицы (типа datetime) с помощью функции datepart. Кстати можно сделать табличку create table mydate( date date, day int, month int, y int, qt int, dayofweek int) Заполнить необходимыми датами лет на 100 вперед, создать индексы, а затем просто в запросе пишешь select day from join, where qt=4 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2003, 11:21 |
|
|
start [/forum/topic.php?fid=44&fpage=70&tid=1609441]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 117ms |
0 / 0 |