Привет всем.

Щас задам вопросы про EXTRACT - вы будете  ними мучаться, а я пойду
дрыхнуть.

WEEKDAY нумерует дни недели с воскресения. А русский человек как-то с
самого рождения считает что первый день недели - понедельник.

Я не осилил арифметичекий алгоритм, который плюсами-минусами сделает
"русскую" нумерацию дней недели из американской :( Наверное можно
заюзать что-то типа CASE, но в любом случае мне так кажется - такую
вещь должен разруливать сервер.

Второй вопрос - почему бы в EXTRACT не добавить поддержку WEEK  - я её
моделирую через DAYOFWEEK+DAYOFYEAR однако там получается что аргумент
вычисляется дважды. Вообщем при реализации маппинга ODBC функций на
родной SQL - получается весьма коряво. Если не поздно, добавьте в 2.1?
Я волшебное слово знаю - ПЫВО.

У меня сейчас на 2.1 типа быстрее всех подготовка запросов на запуск
хранимых процедур отрабатывает (заюзал PROCEDURE_TYPE), будет еще "{fn
WEEK( date_exp ) }" летать :))

Вот код для третьего и первого диалектов

CAST(((EXTRACT(WEEKDAY FROM CAST(('01.01.'||"
CAST(EXTRACT(YEAR FROM(%1))AS VARCHAR(8)))AS TIMESTAMP))
EXTRACT(YEARDAY FROM(%1)))/7+1)AS SMALLINT)

CAST(((EXTRACT(WEEKDAY FROM CAST(('01.01.'||"
CAST(EXTRACT(YEAR FROM(%1))AS VARCHAR(8)))AS DATE))+
EXTRACT(YEARDAY FROM(%1)))/7+0.5)AS SMALLINT)

---
А если появитсься поддержка MONTHNAME и DAYNAME - вообще сойду с ума
от радости.

Коваленко Дмитрий.

Ответить