Форум: "Базы";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
ВнизХелп! Не работает след. запрос ... Найти похожие ветки
← →
relaxer (2002-10-01 23:04) [0]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 ?
← →
Desdechado (2002-10-02 08:37) [1]попробуй через параметры
← →
Johnmen (2002-10-02 09:40) [2]Так где же ошибка ??? На основании чего утверждается о неработе CAST ???
И вообще, зачем же CAST ??? Просто
BETWEEN "21.09.2002" AND "10.10.2002"
← →
DarkGreen (2002-10-02 11:07) [3]А формат даты у IB по умолчанию какой? dd/mm/yyyy или mm/dd/yyyy?
← →
relaxer (2002-10-02 15:02) [4]2Desdechado : это так и делается, я просто в лоб подставил для примера
2Johnmen : Не работа в том, что нет возврата результирующего набора данных. Ибо дааные точно есть, а вот селект их не выбирает... Поля строковые - следовательно идет побайтовое сравнение строк а "1" в цифире "10", МЕНЬШЕ чем "2" в цифире "21"
посему, ИМХО, происходит, запрос как бы "наоборот" т.е. интервал
10.10.02 - 21.09.02, в котором ессно никаких данных нет =(
2DarkGreen : я думаю в случае ошибки в дате, была бы DYNAMIC SQL ERROR при преобразовании "21" в номер месяца. Или ОН это не обрабатывает ....
← →
Johnmen (2002-10-02 15:07) [5]Не понял ... Ты хранишь дату в символьном поле ???
← →
relaxer (2002-10-03 00:53) [6]2Johnmen : ну да, в этом случае - это данность ...
← →
ЮЮ (2002-10-03 02:42) [7]Тогда CAST(MYDATA AS ...)
← →
relaxer (2002-10-04 22:41) [8]2ЮЮ : прочитай ВНИМАТЕЛЬНО начало ветки ...
← →
ЮЮ (2002-10-05 11:20) [9]>relaxer
>прочитай ВНИМАТЕЛЬНО начало ветки
Я то читать умею, а вот ты не очень. Тогда ражёвываю:
У тебя данные в таблице хранятся в символьном виде, т.е в виде "22.09.2002". Вот их и преобразовывай нормальному формату,
т.е. CAST(MYDATA AS ...) и сравнивай их с нормальными параметрами. А преобразовывать параметры к своему корявому формату смыла нет.
← →
BlackTiger (2002-10-05 12:30) [10]relaxer - ты извращенец! :-)
Либо тебе надо ВСЕ даты преобразовывать к ТИПУ даты, либо дату хранить в формате "от редкого к частому", т.е. "YYYY.MM.DD". Тогда выборка будет происходить корректно.
Интересно, а что мешало хранить дату в формате даты?!
← →
User0 (2002-10-05 14:01) [11]To BlackTiger:
Вероятно как и когда-то у меня - неграмотность, начал с нуля, потом приобрел опыт, а теперь латает дыры :)
← →
relaxer (2002-10-06 17:29) [12]2User0 : типа того ... =) Называется "DEADLINE пришел раньше чем была написана прога" =)
2BlackTiger : супер-решение =) честно =) Типа моего (которое пока и работает)формирование (MYDATE="...." OR MYDATE="...." OR ....) =)))) Веселуха, правда.
2ЮЮ : сорри, мой косяк. В ентой таблице еще 32 поля в extended... Посему преобразую именно ПАРАМЕТРЫ... Да и ваще, ЭТО ДОЛЖНО РАБОТАТЬ, ибо так сказал Зара... тьфу, Борланд =)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c