Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

набор данных в пределах текущего года [D6, Fb]


erika ©   (2005-10-17 17:49:00) 

Здравствуйте!
Подскажите пожалуйста.
Пишу запрос, который должен отображать документы только текущего года

SELECT ZAJAVKA.NOMBER, ZAJAVKA.DATA, ZAJAVKA.MANAGER, ZAJAVKA.SR
FROM ZAJAVKA
where (ZAJAVKA.DATA=Year())

была попытка

..
where (ZAJAVKA.DATA=Year(now))

как правильно записть, что дата должна находиться в пределах текущего года (если это возможно сделать с помощью команды)

Заранее спасибо.
ЗЫ. Извините если  вопрос  покажется  глупым


erika   (2005-10-18 09:37:00) [1]

Вроде что - то нашла:

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)

Всем  БОЛЬШОЕ   спасибо  за   участие  в  этой  теме и внимание к  моей персоне


Johnmen   (2005-10-18 09:04:00) [2]

Просто барышня erika никак не желает читать документацию...:(


sniknik   (2005-10-18 08:58:00) [3]

> я  надеялась, что  и  в  FB тоже, но  походу  увы.
есть. не помню точный синтаксис, т.к. не работаю с IB (раз только сталкивался), но чтото похожее там точно работает (может кавычки вокруг NOW должны быть двойные, может вообще без них... не помню).


Anatoly Podgoretsky   (2005-10-18 08:53:00) [4]

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


erika   (2005-10-18 08:47:00) [5]


> where EXTRACT(YEAR FROM ZAJAVKA.data) = EXTRACT(YEAR FROM
> 'NOW')

не ф... ничего  не  вышло, просто  в  MYSQL  это есть,  я  надеялась, что  и  в  FB тоже, но  походу  увы. Эх, и придется  параметром  работать:

> через параметры будет более правильно

ты  конечно  прав....


sniknik   (2005-10-18 08:40:00) [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:18:00) [7]

я  конечно  помимаю,   что  можно  черезе  передачу  параметров, но  очень  уж кочется  иметь  готовое  предстваление


erika   (2005-10-18 08:12:00) [8]


> текст запроса-нехочухи


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.


Desdechado   (2005-10-17 18:47:00) [9]

текст запроса-нехочухи


erika   (2005-10-17 18:31:00) [10]

нашла
так  работает

SELECT ZAJAVKA.NOMBER, ZAJAVKA.data, ZAJAVKA.MANAGER, ZAJAVKA.SR
FROM ZAJAVKA
where EXTRACT(YEAR FROM ZAJAVKA.data) = '2005'

а с NOW() почему - то не КОЧЕТ...


Desdechado   (2005-10-17 18:27:00) [11]

функция EXTRACT


Наверх

Титульная страница Поиск, карта сайта Написать письмо