Работать или не функционировать, вот в чем вопрос - PullRequest
0 голосов
/ 10 февраля 2011

Я работаю над некоторыми операторами SQL для приложения ASP.NET. Одна из вещей, которая требуется, состоит в том, чтобы отображать информацию только в открытом периоде. Период автоматически обновляется программным обеспечением поставщика по мере закрытия предыдущего периода. Так что я обнаружил, что выполняю кучу подвыборов вроде:

where date >= (SELECT DATE(CONCAT('20', CONCAT(YY, CONCAT('-', CONCAT( MM, (CONCAT('-', DD))))))) FROM LIB/FILE') 

Да, каждая часть даты находится в отдельных полях.

Сделает ли этот запрос функцией функцию запроса более эффективной? Я никогда раньше не создавал функции, как бы я это сделал? Моя мысль имеет что-то вроде:

IsInRange(date)

Так что я могу сделать WHERE IsInRange(date).

Или есть лучший способ?

Ответы [ 3 ]

1 голос
/ 11 февраля 2011
CREATE FUNCTION toDate(yy CHAR(2), mm CHAR(2), dd CHAR(2))
RETURNS DATE
RETURN DATE('20' || '-' || yy || '-' || mm || '-' || dd)

SELECT *
FROM table
WHERE date <= toDate(yy, mm, dd)
0 голосов
/ 24 февраля 2011

Пока я создал представление, чтобы объединить поля в одну дату, по крайней мере, это очистило запрос.

0 голосов
/ 10 февраля 2011

Да, но смысл этой функции - повторное использование кода.Если вы делаете это в других местах или ожидаете этого, тогда сделайте это.

...