Форум: "Базы";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Внизнабор данных в пределах текущего года Найти похожие ветки
← →
erika © (2005-10-17 17:49) [0]Здравствуйте!
Подскажите пожалуйста.
Пишу запрос, который должен отображать документы только текущего года
SELECT ZAJAVKA.NOMBER, ZAJAVKA.DATA, ZAJAVKA.MANAGER, ZAJAVKA.SR
FROM ZAJAVKA
where (ZAJAVKA.DATA=Year())
была попытка
..
where (ZAJAVKA.DATA=Year(now))
как правильно записть, что дата должна находиться в пределах текущего года (если это возможно сделать с помощью команды)
Заранее спасибо.
ЗЫ. Извините если вопрос покажется глупым
← →
Desdechado © (2005-10-17 18:27) [1]функция EXTRACT
← →
erika © (2005-10-17 18:31) [2]нашла
так работает
SELECT ZAJAVKA.NOMBER, ZAJAVKA.data, ZAJAVKA.MANAGER, ZAJAVKA.SR
FROM ZAJAVKA
where EXTRACT(YEAR FROM ZAJAVKA.data) = "2005"
а с NOW() почему - то не КОЧЕТ...
← →
Desdechado © (2005-10-17 18:47) [3]текст запроса-нехочухи
← →
erika © (2005-10-18 08:12) [4]
> текст запроса-нехочухи
SELECT ZAJAVKA.DATA, ZAJAVKA.IDZ
FROM ZAJAVKA
where EXTRACT(YEAR FROM ZAJAVKA.data) = now
тоже не кочет, пишет
Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
NOW.
At line 3, column 41.
← →
erika © (2005-10-18 08:18) [5]я конечно помимаю, что можно черезе передачу параметров, но очень уж кочется иметь готовое предстваление
← →
sniknik © (2005-10-18 08:40) [6]erika © (18.10.05 08:12) [4]
насколько понимаю из now тоже необходимо выделить год иначе сравнение безсмыссленно.
вроде так
...
where EXTRACT(YEAR FROM ZAJAVKA.data) = EXTRACT(YEAR FROM "NOW")
erika © (18.10.05 08:18) [5]
> я конечно помимаю, что можно черезе передачу параметров
через параметры будет более правильно, или если можно функциями выделить начало и конец года.
и выглядеть будет
SELECT ZAJAVKA.DATA, ZAJAVKA.IDZ
FROM ZAJAVKA
where ZAJAVKA.data BETWEEN :StartDate AND :EndDate
а вычислением по полю ты фактически отключаеш индекс (если есть), и делаеш полное сканирование таблици, и тормоза естественно.
← →
erika © (2005-10-18 08:47) [7]
> where EXTRACT(YEAR FROM ZAJAVKA.data) = EXTRACT(YEAR FROM
> "NOW")
не ф... ничего не вышло, просто в MYSQL это есть, я надеялась, что и в FB тоже, но походу увы. Эх, и придется параметром работать:
> через параметры будет более правильно
ты конечно прав....
← →
Anatoly Podgoretsky © (2005-10-18 08:53) [8]erika © (18.10.05 08:47) [7]
Дело не в параметрах, а в вычислениях по полю, вместо использования диапазона, а в этом случае производительность может упасть на порядки.
Параметры просто позволят задавать любой диапазон расчета.
Не знаю как там в FB хранятся даты, но если в составе есть время, то не нарвись на побочные эффект, поэтому может быть проще заменить выражение на следующееwhere ZAJAVKA.data >= :StartDate AND ZAJAVKA.data < :EndDate
StartDate = 1.01.Year
EndDate = 1.01.Year+1
← →
sniknik © (2005-10-18 08:58) [9]> я надеялась, что и в FB тоже, но походу увы.
есть. не помню точный синтаксис, т.к. не работаю с IB (раз только сталкивался), но чтото похожее там точно работает (может кавычки вокруг NOW должны быть двойные, может вообще без них... не помню).
← →
Johnmen © (2005-10-18 09:04) [10]Просто барышня erika никак не желает читать документацию...:(
← →
erika © (2005-10-18 09:37) [11]Вроде что - то нашла:
select cast("now" as DATE) from RDB$DATABASE
SELECT ZAJAVKA.DATA, ZAJAVKA.IDZ
FROM ZAJAVKA
where EXTRACT(YEAR FROM ZAJAVKA.data) = EXTRACT(YEAR FROM current_date)
Всем БОЛЬШОЕ спасибо за участие в этой теме и внимание к моей персоне
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.014 c