Форум: "Базы";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
ВнизКак в 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.044 c