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

Вниз

Вопрос по SQL запросам   Найти похожие ветки 

 
alex810 ©   (2006-11-26 19:54) [0]

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


 
Anatoly Podgoretsky ©   (2006-11-26 20:23) [1]

> alex810  (26.11.2006 19:54:00)  [0]

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


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

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


 
Anatoly Podgoretsky ©   (2006-11-26 20:41) [3]

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

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


 
Sam Stone ©   (2006-11-26 21:06) [4]

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

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


 
DrPass ©   (2006-11-26 21:07) [5]


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

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


 
Sam Stone ©   (2006-11-26 21:15) [6]

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


 
alex810 ©   (2006-11-26 21:52) [7]


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

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

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

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

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

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


 
Sam Stone ©   (2006-11-26 21:57) [8]

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

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

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

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


 
Anatoly Podgoretsky ©   (2006-11-26 21:58) [9]

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

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


 
Anatoly Podgoretsky ©   (2006-11-26 22:01) [10]

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

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


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

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

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


 
Anatoly Podgoretsky ©   (2006-11-26 22:07) [12]

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

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

Легче стало?


 
YurkaT ©   (2006-11-26 22:08) [13]


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

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


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

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

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


 
alex810 ©   (2006-11-26 22:21) [15]

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

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;

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


 
alex810 ©   (2006-11-26 22:22) [16]

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


 
Anatoly Podgoretsky ©   (2006-11-26 22:25) [17]

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

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


 
alex810 ©   (2006-11-26 22:26) [18]


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

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


 
Sam Stone ©   (2006-11-26 22:47) [19]

> "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, автор не несет ответственности за вред принесенный кодом, его работоспособность и прочее..." :))))


 
Steep ©   (2006-11-27 10:23) [20]

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


 
sniknik ©   (2006-11-27 11:15) [21]

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

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



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

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

Наверх




Память: 0.52 MB
Время: 0.03 c
3-1160143985
menart
2006-10-06 18:13
2006.12.17
Полнотекстовый поиск MS SQL SErver 2000


11-1141501027
Zhilkin Serg
2006-03-04 22:37
2006.12.17
Удаленные контролы в MCK


6-1153823399
Leonid
2006-07-25 14:29
2006.12.17
Отправка e-mail при регистрации программы у заказчика


2-1164531743
SamProf
2006-11-26 12:02
2006.12.17
Как юзать TMutex в Delhi 2006


2-1164783034
Hero
2006-11-29 09:50
2006.12.17
Завершить процесс explorer,просто убивание процесса неподходит