powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как правильно написать в where "date > 01/01/2007"?
12 сообщений из 12, страница 1 из 1
как правильно написать в where "date > 01/01/2007"?
    #34823530
AlexeyGY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
База dBase III, пишу небольшую программу на С. Базу подключаю через ODBC:

Код: plaintext
DRIVER={Driver do Microsoft dBase (*.dbf)};DSN=dBASE Files;DefaultDir=xxx;DBQ=xxx

Все нормально пашет, но с полем типа "DATE" не могу разобратся. Нужно выбрать записи с определенной датой, например 25.09.2007. Соответственно пишу нечто:

Код: plaintext
SELECT * FROM CO01 WHERE DATA =  25 / 09 / 2007 

DATA - это поле типа DATE. Получаю пустой результат.

Когда пишу:

Код: plaintext
SELECT * FROM CO01 WHERE DATA >  22 / 09 / 2007 

Получаю все записи, даже с 21.09.2007

Также пробовал всяческие варианты:

Код: plaintext
{ 22 / 09 / 2007 }
Код: plaintext
{ 22 , 09 , 2007 }
Код: plaintext
{ 22 - 09 - 2007 }
Код: plaintext
date( 22 , 09 , 2007 )
Код: plaintext
'22/09/2007'
Код: plaintext
{ 22 . 09 . 2007 }

В ответ получаю ошибку синтаксиса...

Подскажите, пожалуйста, в чем проблема?
...
Рейтинг: 0 / 0
как правильно написать в where "date > 01/01/2007"?
    #34823584
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
where "date"='2007-09-25'
или
local ldDate
ldDate=date( 2007 , 09 , 25 ) && или др.значение из формы в формате даты
where "date"=?m.ldDate
...
Рейтинг: 0 / 0
как правильно написать в where "date > 01/01/2007"?
    #34823605
AlexeyGY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
where "DATA"='2007-09-25'

[Microsoft][Драйвер ODBC dBase] Несоответствие типов данных в выражении условия отбора

Код: plaintext
1.
2.
local ldDate
ldDate=date( 2007 , 09 , 25 ) && или др.значение из формы в формате даты

Я не понял куда вставлять? До "where"?
...
Рейтинг: 0 / 0
как правильно написать в where "date > 01/01/2007"?
    #34823635
Код: plaintext
SELECT * FROM CO01 WHERE DATA = {^ 2007 - 09 - 25 }
...
Рейтинг: 0 / 0
как правильно написать в where "date > 01/01/2007"?
    #34823645
AlexeyGYБаза dBase III, пишу небольшую программу на С. Базу подключаю через ODBC:

Код: plaintext
DRIVER={Driver do Microsoft dBase (*.dbf)};DSN=dBASE Files;DefaultDir=xxx;DBQ=xxx

Все нормально пашет, но с полем типа "DATE" не могу разобратся. Нужно выбрать записи с определенной датой, например 25.09.2007. Соответственно пишу нечто:

Код: plaintext
SELECT * FROM CO01 WHERE DATA =  25 / 09 / 2007 

DATA - это поле типа DATE. Получаю пустой результат.

Когда пишу:

Код: plaintext
SELECT * FROM CO01 WHERE DATA >  22 / 09 / 2007 

Получаю все записи, даже с 21.09.2007

Также пробовал всяческие варианты:

Код: plaintext
{ 22 / 09 / 2007 }
Код: plaintext
{ 22 , 09 , 2007 }
Код: plaintext
{ 22 - 09 - 2007 }
Код: plaintext
date( 22 , 09 , 2007 )
Код: plaintext
'22/09/2007'
Код: plaintext
{ 22 . 09 . 2007 }

В ответ получаю ошибку синтаксиса...

Подскажите, пожалуйста, в чем проблема?
Так Вам же понятно сказал драйвер - проблема в синтаксисе! Точнее в том, что драйвер не может преобразовать строку "22.09.2007" в дату.
Можно попробовать следующие варианты:
1. DATE(Год,Месяц,День) (скорее всего, подойдет только для VFP ODBC)
2. {d'22.09.2007'} (взято из: MDAC 2.5 SDK - ODBC Programmer's Reference Chapter 8: SQL Statements )
3. CTOD(22.09.2007) (скорее всего, подойдет только для VFP ODBC)
4. {^год-месяц-день} (скорее всего, подойдет только для VFP ODBC)
5. #22.09.2007#
и т.д.
...
Рейтинг: 0 / 0
как правильно написать в where "date > 01/01/2007"?
    #34823678
Если мой предыдущий вариант не подойдет, то можно еще вот так:
Код: plaintext
SELECT * FROM CO01 WHERE DATA = CTOD(' 25 . 09 . 2007 )
...
Рейтинг: 0 / 0
как правильно написать в where "date > 01/01/2007"?
    #34823682
AlexeyGY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
SELECT * FROM CO01 WHERE DATA = {^ 2007 - 09 - 25 }

Ошибка в синтаксисе[пропущен оператор] в выражении 'DATA ='

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Так Вам же понятно сказал драйвер - проблема в синтаксисе! Точнее в том, что драйвер не может преобразовать строку "22.09.2007" в дату.
Можно попробовать следующие варианты:
 1 . DATE(Год,Месяц,День) (скорее всего, подойдет только для VFP ODBC)
 2 . {d'22.09.2007'} (взято из: MDAC  2 . 5  SDK - ODBC Programmer's Reference Chapter  8 : SQL Statements )
 3 . CTOD( 22 . 09 . 2007 ) (скорее всего, подойдет только для VFP ODBC)
 4 . {^год-месяц-день} (скорее всего, подойдет только для VFP ODBC)
 5 . # 22 . 09 . 2007 #
и т.д.

Ошибка в синтаксисе.

Единственное, что работает, как альтернатива:

Код: plaintext
1.
... where YEAR(DATA)= 2007  and MONTH(DATA)= 09  and DAY(DATA)= 25 

Но в этом варианте писанины больше.
...
Рейтинг: 0 / 0
как правильно написать в where "date > 01/01/2007"?
    #34823686
Упс, закрывающую кавычку после 2007 пропустил.
...
Рейтинг: 0 / 0
как правильно написать в where "date > 01/01/2007"?
    #34824302
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дата обрамляется символами # и разделителем служит наклонная черта.

Код: plaintext
SELECT * FROM CO01 WHERE DATA = # 25 / 09 / 2007 #

Но, вообще-то, лучше передавать константы как параметры. Не уверен в синтаксисе С, но обычно параметры передаются через вопросительный знак

Код: plaintext
SELECT * FROM CO01 WHERE DATA = ?varDate

Где varDate - это переменная типа Date (если там такая есть) в собственно C
...
Рейтинг: 0 / 0
как правильно написать в where "date > 01/01/2007"?
    #34835081
Andrey Ts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2AlexeyGY
А по-моему, вы просто используете глючный ODBC драйвер.
Может возьмете все-таки более распространенный MS Visual FoxPro Driver?
...
Рейтинг: 0 / 0
как правильно написать в where "date > 01/01/2007"?
    #34855484
StrStr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делал на С запрос к DBF базе через ОДБС(подключался через Foxpro драйверы). Незная foxpro, тоже возился с датой. Вот так работает, например:
WHERE DATE Between {m1/d1/y1} AND {m2/d2/y2}
m, d, y - понятно что. Например {01/02/2007}
...
Рейтинг: 0 / 0
как правильно написать в where "date > 01/01/2007"?
    #34855487
StrStr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
До того, как сделал правильно, тоже получал "Ошибку синтаксиса" и "Несоответствие типов данных"
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как правильно написать в where "date > 01/01/2007"?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]