Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.27;
Скачать: CL | DM;

Вниз

набор данных в пределах текущего года   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
1-1130844137
ai3000
2005-11-01 14:22
2005.11.27
Мега-БПЛ


1-1130941441
Владислав
2005-11-02 17:24
2005.11.27
Размещение экземпляра класса по заданному адресу.


14-1131181753
Lisa
2005-11-05 12:09
2005.11.27
Помогите с DXF


4-1127676626
Ishmael
2005-09-25 23:30
2005.11.27
Выделение физической памяти


14-1131118960
Константинов
2005-11-04 18:42
2005.11.27
Оплата труда