Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Date в Sql-запросе для Query


Автор: redlorik 26.3.2008, 23:33
Господа! Просветите, пожалуйста! 
Исходные: есть таблица, в которой есть поле-string, тудысь заношу дату в формате dd.mm.gg. 
Задача: выбрать данные за период date1-date2. 
Написала условие: WHERE stat.num = inform.num AND cast(stat.Day as date)  between Form3.Edit1.Text and Form3.Edit2.Text. 
Ругается на Day. smile  Меняла в таблице формат поля на date. Пыталась сравнивать напрямую. Все равно выдает ошибку на Day. Что сделать?  smile 

Автор: Данкинг 26.3.2008, 23:37
Цитата(redlorik @ 26.3.2008,  23:33)
AND cast(stat.Day as date)  between Form3.Edit1.Text and Form3.Edit2.Text. 

А как дату с текстом сравнивать можно?

Автор: redlorik 26.3.2008, 23:51
Цитата

AND cast(stat.Day as date)  between Form3.Edit1.Text and Form3.Edit2.Text. 

 это мое последнее извращение... Я конечно не дату с текстом сравниваю... Я все привожу к формату даты и сравниваю, но я не могу понять почему она на поле таблицы ругается... Я его объявляю как дату а она при работе выдает ошибку на это поле.. 

Автор: Данкинг 27.3.2008, 00:05
Form3.Edit1.Text and Form3.Edit2.Text  к дате приводишь??

Автор: redlorik 27.3.2008, 00:09
да.

Автор: Данкинг 27.3.2008, 00:18
Попробуй cdate(stat.day).

Автор: redlorik 27.3.2008, 00:25
Invalid use of keyword.Token: day) smile ... Может мне имя поменять?

Автор: Данкинг 27.3.2008, 00:32
А так вообще работает? У меня работает:

select all cdate(day) from table

И это работает:

select all day from table where  cdate(day)>cdate('15.10.2008')

Автор: redlorik 27.3.2008, 00:37
Если я правильно переписал для себя
select all cdate(stat.day1) from stat.db as stat

у меня выдала capability not supported

Автор: Данкинг 27.3.2008, 00:41
А Access какой? У меня-то 2000 - единственный нормальный в отличие от того глючного и неудобного в работе г-на, которое было после.

Ещё:

select all cdate(stat.day1) from stat.db as stat

после from должно имя таблицы идти, а у тебя что? И убери пока что "as stat", сиё только мешает.

Автор: redlorik 27.3.2008, 01:10
у меня не Access... у меня Delphi... 

Автор: Данкинг 27.3.2008, 01:22
Цитата(redlorik @ 27.3.2008,  01:10)
у меня не Access... у меня Delphi...

А СУБД-то какая? Я почему-то подумал, что Access. Бывает. smile 

Автор: Beltar 27.3.2008, 08:47
Изврат. Если есть формат Date его надо юзать.
Я обычно запрос в текстовом виде сначала проверяю в самой БД, а потом уже набираю в Delphi с поправками типа вместо дат параметры и т. п. мелочь. С датами формат может отличаться, я сам недавно с такой фигней столкнулся, пришлось вставлять в запрос времена в виде текста в формате yyyy.mm.dd

Автор: redlorik 27.3.2008, 21:37
Спасибо за советы! Проблему решила в лоб. Запустила SQL Builder и записала запрос. Оказалось дело в кавычках!!! В книжках пишут про одинарные (то биш дату для сравнения нужно заключать в кавычки одинарные) а на деле оказалось двойные ест. Вот такая фи...

Автор: Данкинг 27.3.2008, 22:06
А СУБД-то какая всё же?

Автор: redlorik 30.3.2008, 22:39
Таблица формата Paradox. В Delphi используется InterBase 6.5, но есть компоненты , которые позволяют работать и с другими базами. Я пользую пока только локальные paradox.

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