Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по SQL запросам


Страницы:   1 2

alex810 ©   (2006-11-26 19:54:00) 

Добрый вечер.
У меня есть база данных где запись даты ведется в виде 15.12.2006.
У меня вопрос, как можно выбрать из базы данные только задавая месяц.


sniknik   (2006-11-27 11:15:00) [1]

> А что делать надо чтобы работало
можно ничего не делать. правда. большинству здесь плевать работает оно там у тебя или нет, это твои проблемы.

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


Steep   (2006-11-27 10:23:00) [2]

Я просто написал функцию перевода SQL дат в делфовские и обратно
а с делфоскими уже работал...


Sam Stone   (2006-11-26 22:47:00) [3]

> 'Select * from \ Diplom\Bases\

кошмар.....

var d1,d2:TDateTime;
Month:word;
begin
 Month:=StrToInt(Edit1.text);
 d1:=EncodeDate(YearOf(now),Month,1);
 d2:=EncodeDate(YearOf(now),Month,DaysInAMonth(YearOf(Now),Month));
 Query.sql.text:='select * from MyTable where data between :dvar1 and dvar2';
 Query.Parameters.ParseSQL(Query.sql.text,true);
 Query.PArameters.ParamByName['dvar1']:=d1;
 Query.PArameters.ParamByName['dvar2']:=d2;
end;

Дабы отгородиться от... :) "Данный код предоставляетя по принципу AS IS, автор не несет ответственности за вред принесенный кодом, его работоспособность и прочее..." :))))


alex810   (2006-11-26 22:26:00) [4]


> Какой упорный партизан.

А что делать надо чтобы работало


Anatoly Podgoretsky   (2006-11-26 22:25:00) [5]

> alex810  (26.11.2006 22:21:15)  [15]

Какой упорный партизан.


alex810   (2006-11-26 22:22:00) [6]

Извените связь оборвало не мог дозвониться


alex810   (2006-11-26 22:21:00) [7]

У меня код
определяем количество дней в месяце

function DaysOfMonth(mm, yy: Integer): Integer;
begin
 if mm = 2 then
 begin
   Result := 28;
   if IsLeapYear(yy) then Result := 29;
 end
 else
 begin
   if mm < 8 then
   begin
     if (mm mod 2) = 0 then
       Result := 30
     else
       Result := 31;
   end
   else
   begin
     if (mm mod 2) = 0 then
       Result := 31
     else
       Result := 30;
   end;
 end;
end;


Затем фильтруем


procedure TForm13.Button1Click(Sender: TObject);
begin
days := DaysOfMonth(StrToInt(Edit1.Text), 2007);
 DataModule6.Query3.Active:=False;
 DataModule6.Query3.SQL.Clear;
 DataModule6.Query2.SQL.text:=('Select * from \Diplom\Bases\Pokaz\Shetch1\Moshn.db where data between ''1.'+ Edit1.Text+'2007 ''and '''+IntToStr(days)+'.'+Edit1.Text+'.2007''');
 DataModule6.Query3.Active:=True;
 Form5.Series1.DataSource:=DataModule6.Query2;
end;

вроде бы ошибки не выдает но и отфильтрованные значения тоже. В чем может быть ошибка?


Sam Stone   (2006-11-26 22:14:00) [8]

> [11] Anatoly Podgoretsky ©   (26.11.06 22:02)

телепатов в [10] посту расстреляли )
А писать [12] не стал по причине незнания базы )


YurkaT   (2006-11-26 22:08:00) [9]


> Sam Stone ©   (26.11.06 20:33) [2]
>
> передавать в запрос условие where MyDateField between 1.
> 12.2006 and 31.12.2006

Вопрос о запросе был...ето идеальное решение, а проблемма синтаксиса, дело наживное


Anatoly Podgoretsky   (2006-11-26 22:07:00) [10]

> alex810  (26.11.2006 21:52:07)  [7]

SELECT DATEPART(month, GETDATE()) AS 'Month' WHERE Month=12

Легче стало?


Anatoly Podgoretsky   (2006-11-26 22:02:00) [11]

> Sam Stone  (26.11.2006 20:33:02)  [2]

Во вторых, его не интересует дата и интервал, только месяц!


Anatoly Podgoretsky   (2006-11-26 22:01:00) [12]

> alex810  (26.11.2006 21:52:07)  [7]

А откуда тогда "15.12.2006" это же текстовый формат
Ладно выяснили, что у тебя не текстовый формат, а какой
И почему молчим про второй вопрос, у тебя база то есть, или это текстовый файл?
Ты ожидаешь ответа про неизвестную базу и про неизсветсный тип поля, так телепатов в 17 году перестреляли.


Anatoly Podgoretsky   (2006-11-26 21:58:00) [13]

> Sam Stone  (26.11.2006 21:15:06)  [6]

Так и пиши прямо Псевдокод, а то читатели будут обижаться, вставил, а оно не работает.


Sam Stone   (2006-11-26 21:57:00) [14]

> [7] alex810 ©   (26.11.06 21:52)
> номер месяца необходимо задавать в едите

собрать дату имея номер месяца гордость не позволяет? :) Если есть возможность(ты не указал бд) - серверной функцией вытащи месяц из даты, вбитой в поле.

> вставлять их не надо надо их отфильтровать

не все ли равно в каком запросе(insert, update, delete) использовать переменные?


alex810   (2006-11-26 21:52:00) [15]


> Для начала сменить тип поля со стрового на тип дат, зависит
> от твоей базы, потом можно ответить и на вопрос, но он тоже
> зависит от типа базы.

Тип поля у меня не строковый.

> передавать в запрос условие where MyDateField between 1.
> 12.2006 and 31.12.2006

номер месяца необходимо задавать в едите

> просто лень было писать переменные :) Автор наверняка про
> них догадается, каждый день вопрос появляется про вставку
> даты)

вставлять их не надо надо их отфильтровать


Sam Stone   (2006-11-26 21:15:00) [16]

И не лень к каждому символу придираться? Считайте, что это псевдокод, показывающий автору суть действия :))


DrPass   (2006-11-26 21:07:00) [17]


> просто лень было писать переменные

Ага. И кавычки - тоже лень


Sam Stone   (2006-11-26 21:06:00) [18]

> [3] Anatoly Podgoretsky ©   (26.11.06 20:41)

просто лень было писать переменные :) Автор наверняка про них догадается, каждый день вопрос появляется про вставку даты)


Anatoly Podgoretsky   (2006-11-26 20:41:00) [19]

> Sam Stone  (26.11.2006 20:33:02)  [2]

Думаю, любая база обидится.


Sam Stone   (2006-11-26 20:33:00) [20]

передавать в запрос условие where MyDateField between 1.12.2006 and 31.12.2006


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо