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

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

Хелп! Не работает след. запрос ... [D6, IB6.x]


relaxer ©   (2002-10-01 23:04:00) 

select * from MYDATA where MYDATE BETWEEN (CAST ("21.09.2002" AS TIMESTAMP)) AND (CAST ("10.10.2002" AS TIMESTAMP))
возвращает 0 рекордов,
а вот select * from MYDATA where MYDATE BETWEEN (CAST ("21.09.2002" AS TIMESTAMP)) AND (CAST ("22.10.2002" AS
TIMESTAMP))
работает правильно ...
Понятно, что он почему то смотрит на "21" и "10" и ессно 2-ое меньше первого, но вот почему не работает CAST ?


relaxer   (2002-10-06 17:29:00) [1]

2User0 : типа того ... =) Называется "DEADLINE пришел раньше чем была написана прога" =)
2BlackTiger : супер-решение =) честно =) Типа моего (которое пока и работает)формирование (MYDATE="...." OR MYDATE="...." OR ....) =)))) Веселуха, правда.
2ЮЮ : сорри, мой косяк. В ентой таблице еще 32 поля в extended... Посему преобразую именно ПАРАМЕТРЫ... Да и ваще, ЭТО ДОЛЖНО РАБОТАТЬ, ибо так сказал Зара... тьфу, Борланд =)


User0   (2002-10-05 14:01:00) [2]

To BlackTiger:

Вероятно как и когда-то у меня - неграмотность, начал с нуля, потом приобрел опыт, а теперь латает дыры :)


BlackTiger   (2002-10-05 12:30:00) [3]

relaxer - ты извращенец! :-)

Либо тебе надо ВСЕ даты преобразовывать к ТИПУ даты, либо дату хранить в формате "от редкого к частому", т.е. "YYYY.MM.DD". Тогда выборка будет происходить корректно.

Интересно, а что мешало хранить дату в формате даты?!


ЮЮ   (2002-10-05 11:20:00) [4]

>relaxer
>прочитай ВНИМАТЕЛЬНО начало ветки
Я то читать умею, а вот ты не очень. Тогда ражёвываю:
У тебя данные в таблице хранятся в символьном виде, т.е в виде "22.09.2002". Вот их и преобразовывай нормальному формату,
т.е. CAST(MYDATA AS ...) и сравнивай их с нормальными параметрами. А преобразовывать параметры к своему корявому формату смыла нет.


relaxer   (2002-10-04 22:41:00) [5]

2ЮЮ : прочитай ВНИМАТЕЛЬНО начало ветки ...


ЮЮ   (2002-10-03 02:42:00) [6]

Тогда CAST(MYDATA AS ...)


relaxer   (2002-10-03 00:53:00) [7]

2Johnmen : ну да, в этом случае - это данность ...


Johnmen   (2002-10-02 15:07:00) [8]

Не понял ... Ты хранишь дату в символьном поле ???


relaxer   (2002-10-02 15:02:00) [9]

2Desdechado : это так и делается, я просто в лоб подставил для примера
2Johnmen : Не работа в том, что нет возврата результирующего набора данных. Ибо дааные точно есть, а вот селект их не выбирает... Поля строковые - следовательно идет побайтовое сравнение строк а "1" в цифире "10", МЕНЬШЕ чем "2" в цифире "21"
посему, ИМХО, происходит, запрос как бы "наоборот" т.е. интервал
10.10.02 - 21.09.02, в котором ессно никаких данных нет =(
2DarkGreen : я думаю в случае ошибки в дате, была бы DYNAMIC SQL ERROR при преобразовании "21" в номер месяца. Или ОН это не обрабатывает ....


DarkGreen   (2002-10-02 11:07:00) [10]

А формат даты у IB по умолчанию какой? dd/mm/yyyy или mm/dd/yyyy?


Johnmen   (2002-10-02 09:40:00) [11]

Так где же ошибка ??? На основании чего утверждается о неработе CAST ???
И вообще, зачем же CAST ??? Просто
BETWEEN "21.09.2002" AND "10.10.2002"


Desdechado   (2002-10-02 08:37:00) [12]

попробуй через параметры


Наверх

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