![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хелп! Не работает след. запрос ... [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]попробуй через параметры