Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Foxpro/Clipper/Dbase > Запросы SQL в dBase


Автор: takedo 20.7.2005, 14:49
Уважаемые программисты!
Не могу никак додуматься сам о том, как же мне вытащить из базы данных типа dBase IV данные по условию! smile
В базе есть поле POLE__0 - тип DATE. Хочется вытащить строки, удовлетворяющие дата в которых была бы больше некоторого значения. Пишу так:
1) SELECT * FROM db_te1 WHERE POLE__0 > '07-17-05' - несоответствие типов данных в условии отбора
2) SELECT * FROM db_te1 WHERE {fn CONVERT(SQL_VARCHAR,POLE__0,110)} > '07-17-05' - ошибка синтаксиса (пропущен оператор) в выражении запроса '>'07-17-05'

Ну как же написать-то??? помогите!!! smile smile smile smile smile smile smile

Автор: ArnoldLane 20.7.2005, 23:24
В винде дату можно представлять дату как угодно, и так - дд.мм.гг, и так - дд-мм-гг, но BDE подразумевает, что разделителем между днями, неделями и годами, должна быть точка.
По крайней мере с таким запросом хлопот возникнуть не должно:
Код

select * from db_te1 where pole_0>'07.17.05'

Возможноя я и не прав, или чего-то не понимаю. В любом случае зачем плодить проблемы на ровном месте. По-моему не трудно перед вставкой в условие запроса преобразовать строку '07-17-05' в строку '07.17.05'.

Автор: Guest 22.7.2005, 12:05
"Слишком мало параметров. Требуется 1." - выдается вот это smile smile smile smile smile smile smile

Автор: Coocky 7.9.2005, 16:51
Темы нужно создавать в соответсвующих разделах!
Тема перенесена

Автор: Cashey 7.9.2005, 21:50
Надо поставить оператор перевода из формата строки в формат Даты (например ctod() в фоксе или strtodate в паскале)

Автор: Dimchik 24.10.2005, 04:38
Цитата(takedo @ 20.7.2005, 14:49)

1) SELECT * FROM db_te1 WHERE POLE__0 > '07-17-05' - несоответствие типов данных в условии отбора
2) SELECT * FROM db_te1 WHERE {fn CONVERT(SQL_VARCHAR,POLE__0,110)} > '07-17-05' - ошибка синтаксиса (пропущен оператор) в выражении запроса '>'07-17-05'


если под DOS то условие такое WHERE POLE__0 > {мм.дд.год(типа2005)}
если под VFP7 то условие такое WHERE POLE__0 > {^год(типа2005).mm.dd}

Автор: Cashey 24.10.2005, 20:34
Цитата(Dimchik @ 24.10.2005, 04:38)
если под DOS то условие такое WHERE POLE__0 > {мм.дд.год(типа2005)}
если под VFP7 то условие такое WHERE POLE__0 > {^год(типа2005).mm.dd}

Это будет зависить от выставленного формата даты. Как я понял присоединение к базе идет не через Фокс, а через какой-то драйвер

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)