Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.053 c
11-1141321073
Maloric
2006-03-02 20:37
2006.12.17
Помогите разобраться с компонентами


1-1162547389
Dmitry_177
2006-11-03 12:49
2006.12.17
Удалить первые n-байт из файла


3-1159196363
Vendict
2006-09-25 18:59
2006.12.17
Невидимая SyBase


2-1164656657
Golikov
2006-11-27 22:44
2006.12.17
как создать свой ключ в реестре ?


2-1164618841
alex810
2006-11-27 12:14
2006.12.17
DBVhart





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский