Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.26;
Скачать: CL | DM;

Вниз

Как в ADO SQL-запросе указать дату?   Найти похожие ветки 

 
kaif ©   (2006-09-25 14:52) [0]

Никак не могу сделать условие по дате:
Ни один вариант не работает. Говорит operator/operdand type mismatch:
select * from mytable where adate = "11.09.2006"
select * from mytable where adate = "11/09/2006"
select * from mytable where adate = 11.09.2006
select * from mytable where adate = 11/09/2006

База данных FoxPro. OLE DB Provider.

Как явно записать дату в SQL-запросе?


 
Sergey13 ©   (2006-09-25 14:57) [1]

Через параметры наверное.


 
clickmaker ©   (2006-09-25 14:57) [2]

еще так не пробовал
"2006-09-11"

а может лучше так?
select * from mytable where adate = :ADate;

Query.ParamByname("ADate").AsDateTime := Now;


 
kaif ©   (2006-09-25 15:01) [3]

select * from mytable where adate = cast("11/09/2006" as date)
select * from mytable where adate = cast("09/11/2006" as date)
не дает ошибки.
Но и набор возвращает пустой, хотя такие даты есть.

Я уже на стену лезу. В google поиск пока ничего не прояснил.


 
kaif ©   (2006-09-25 15:03) [4]

clickmaker ©   (25.09.06 14:57) [2]
еще так не пробовал
"2006-09-11"


Все пробовал. Сейчас через параметры попробую. Хотя мне это крайне неудобно.
Может функция есть какая по кодированию даты в ADO?
Я с ADO редко работаю. Не знаю.


 
clickmaker ©   (2006-09-25 15:06) [5]

в FoxPro вроде бы формат по умолчанию mm/dd/yyyy
попробуй так
set date german
select * from mytable where adate = "11.09.2006"


 
kaif ©   (2006-09-25 15:10) [6]

Никак не выходит.
Через параметр достучался.
   
qryQuery.Parameters.ParamByName("data").Value := StrToDate("11.09.2006");


Это очень неудобно, ну да ладно. Как-нибудь перебьюсь.
Спасибо.

Если кто знает функцию какую-нибудь типа encode() для SQL-синтаксиса ADO, буду признателен за помощь.
Пока поработаю передачей через параметр.


 
SergP ©   (2006-09-25 15:10) [7]

В самом фокспро дата указывается так:
where date = {01.01.2006}
т.е. в фигурных скобках. Правда внутри формат даты может быть разным.

попробуй... Может через адо аналогично будет...


 
stud ©   (2006-09-25 15:12) [8]

дык через параметры отлично работает.
может там время все портит?


 
SergP ©   (2006-09-25 15:16) [9]

> Если кто знает функцию какую-нибудь типа encode() для SQL-
> синтаксиса ADO, буду признателен за помощь.
> Пока поработаю передачей через параметр.


если используешь фокспровский провайдер, то попробуй ф-цию ctod()
В фоксе есть такая штука, а вот будет ли работать через АДО - не знаю...


 
Ega23 ©   (2006-09-25 15:22) [10]

const SQLDateTimeFmt=""{ts""" yyyy-mm-dd hh:nn:ss""" }"";
Если ещё и миллисекунды нужны - .zzz добавь.
Обращаться - SysUtils.DateTimeToString( ... ,SQLDateTimeFmt, ....);


 
SergP ©   (2006-09-25 15:32) [11]

> Если ещё и миллисекунды нужны - .zzz добавь.


В БД фокспро в полях типа date нет миллисекунд, а также часов, минут и секунд...


 
kaif ©   (2006-09-25 15:36) [12]

собственно, зачем я этим занят...
У меня здесь такая засада с этим драйвером...
Одна важная таблица нормально не открывается.
Говорит "поставщик данных вернул состояние E_FAIL".
Причем результитрующий набор в сетке виден, но перемещаться по нему невозможно - любая попытка сдвинуться с места порождает эту же ошибку E_FAIL.

Полей в этой таблице штук 60.
Если три поля исключаю из запроса, все нормально открывается.
Исследовал строки, в которых происходит сбой.
Сужал набор при помощи дат (для этого они мне и понадобились).
Добился того, что вне трех дат (26.11.2003, 03.12.2003, 26.02.2004) сбоя не наблюдаю.

Сужаю набор до одной даты: 26.02.2004.
Сбой виден.
В наборе 12 строк.
Там еще поле time (у авторов таблицы там текст, означающий, видно, минуты от полуночи в текстовом виде по 4 цифры).
Методом исключения добился, что запрос вида
select * from ... where data = :data and time < "1123"
возвращает 12 строк без сбоя,
а запрос
select * from ... where data = :data and time <> "1123"
возвращает те же 12 строк со сбоем.
Видно есть еще 13-я строка, которая и вызывает сбой.

Мне нужно делать импорт этих данных.

Сейчас в FoxPro Поищу эту тринадцатую строку.
Интересно, число 13 действительно заколдованное?...:)


 
kaif ©   (2006-09-25 15:39) [13]

Офигеть! Явно набрал как в FoxPro:

select * from ... where data = {09.11.2006}

И сработало!!!!

Спасибо всем, особенно SergP ©  и Ega23!

Мне такое и в голову бы не пришло...


 
kaif ©   (2006-09-25 15:54) [14]

Да, действительно на эту дату существуют еще записи (еще десяток). И видно первая из них и вызывает сбой. Как чинить таблицу - в толк не возьму. Делаю копию в FoxPro (save as...). Без индексов. Упаковываю даже на всякий пожарный. Все равно - сбой. Глюкавый какой-то этот FoxPro OLE DB Provider...
:(


 
Ega23 ©   (2006-09-25 15:55) [15]


> В БД фокспро в полях типа date нет миллисекунд, а также
> часов, минут и секунд...
>


Этот формат для MSSQL. Для других СУБД использовать не пробовал.


 
sniknik ©   (2006-09-25 16:31) [16]

> И видно первая из них и вызывает сбой. Как чинить таблицу - в толк не возьму.
посмотри текстовым редактором файл, интересующие записи, старый фокс/BDE/хз. что еще позволяло заносить в числовые поля строки, в смысле они там и так строки я не про то, а то что если записать им число с переполнением например 100000 в поле desimal(3) то он (этот ктото из списка)  не давал ошибку а писал в поля "***" вот как есть строкой... естественно число из него уже не прочитаеш, даже если очень хочется...
были у меня такие таблици.


 
Desdechado ©   (2006-09-25 17:44) [17]

а почему параметры использовать неудобно?!
имхо, совсем наоборот
Ашот, ты прям как первый раз в БД лезешь...


 
kaif ©   (2006-09-25 18:31) [18]

2 Desdechado ©   (25.09.06 17:44) [17]
Неудобно было потому что я занимался исследованием таблицы. Делал сотни разных запросов, локализуя сбойные строки. Мне нужно было то отсеивать по дате, то еще как-то, то группировать по каким-то полям и искать корреляции. У меня там 60 полей, в которых не ясно, что вообще записано...

Я в первый раз лезу в базу, в которой столько проблем.


 
sniknik ©   (2006-09-25 18:42) [19]

ну если считать каждое незнание формата/чегото в определенной базе, проблемой базы... то их, этих проблем стока... что лучше и не начинать... (лучше следовать девизу "сделай свой двор чище!" ;о)))

> в которых не ясно, что вообще записано...
1C? :) они это любят, записать так чтобы было неясно, а через саму 1С все понятно.



Страницы: 1 вся ветка

Текущий архив: 2006.11.26;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.053 c
3-1154341999
Reaktor
2006-07-31 14:33
2006.11.26
Помогите начать работать с книгами exel


2-1162898444
ancot
2006-11-07 14:20
2006.11.26
Количество ссылок на объект


15-1162886648
Станислав
2006-11-07 11:04
2006.11.26
UNIX программист


2-1163166125
Fostr
2006-11-10 16:42
2006.11.26
StringGrid.Refresh


6-1152085095
Квэнди
2006-07-05 11:38
2006.11.26
Ping с параметрами