Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.5 MB
Время: 0.05 c
15-1162956269
Slider007
2006-11-08 06:24
2006.11.26
С днем рождения ! 8 ноября


15-1162622446
ArtemESC
2006-11-04 09:40
2006.11.26
Установка FreeBSD


3-1159203037
*Ray*
2006-09-25 20:50
2006.11.26
Обработка ошибок


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


15-1163023829
Орион
2006-11-09 01:10
2006.11.26
Задачка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский