Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
08.10.2002, 17:32
|
|||
|---|---|---|---|
|
|||
[Informix] Квартал |
|||
|
#18+
Здравствуйте! В данное время мне приходится выполнять миграцию программного комплекса с MSSQL на Informix. Есть представление в MSSQL (view), полями которого, в частности, являются день, месяц, год, день недели и квартал, получаемые из одного поля таблицы (типа datetime) с помощью функции datepart. При переводе этого представления в Informix я использую функции year, month, weekday и т.д. для получения года, месяца и т.д. Но! Функции quarter я в Informix не нашел... Вопрос: как мне получить из даты квартал? (аналогично, как это делается в MSSQL с помощью функции datepart(quarter, SomeDateTimeField)) Спасибо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.10.2002, 11:35
|
|||
|---|---|---|---|
|
|||
[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, 19:01
|
|||
|---|---|---|---|
|
|||
[Informix] Квартал |
|||
|
#18+
Ага, т.е. написать свою udf... Спасибо... Кстати, предложенный вариант не прошел, пришлось заменить case на if - elif - else... PS: Вдруг кому-нибудь понадобится: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.01.2003, 18:00
|
|||
|---|---|---|---|
[Informix] Квартал |
|||
|
#18+
Можно и более изящно :) TRUNC((MONTH(TODAY)-0.5)/3)+1 Quarters, -- Quarters (by Informix FAQ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.01.2003, 18:04
|
|||
|---|---|---|---|
[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; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2003, 11:21
|
|||
|---|---|---|---|
|
|||
[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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=44&mobile=1&tid=1609441]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
67ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 156ms |

| 0 / 0 |
