Форум: "Начинающим";
Текущий архив: 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