Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2011, 03:17   #1
ГОСЕАН
Форумчанин
 
Аватар для ГОСЕАН
 
Регистрация: 03.05.2007
Сообщений: 247
По умолчанию Запрос промежутка времени

SELECT FIOS, dpos, nazvots, YEAR(dpos) AS god, MONTH(dpos) AS mes, dvips, vopls, YEAR(dpos) - YEAR(DrSP) AS Expr1, DrSP, DAY(dvips - dpos)
AS Expr2
FROM dbo.Stasionar
WHERE (YEAR(dpos) - YEAR(DrSP) < 19) and mes=:id10 anr god=::id11
выборка идет по god и mes....как сделать если пользователь набрал номер месяца, то выборка должна производиться между 26 и 25, например: выбрал месяц №3 (март) то результаты должны быть между 26 февралем и 25 марта.

Последний раз редактировалось ГОСЕАН; 09.06.2011 в 02:47. Причина: дополнение
ГОСЕАН вне форума Ответить с цитированием
Старый 08.06.2011, 08:33   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

where dpos>=ДАТА1 and dpos<=ДАТА2
значения в ДАТА1 и ДАТА2 сформировать программно, формат записи согласно требованиям СУБД или в параметризированном виде
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.06.2011, 02:44   #3
ГОСЕАН
Форумчанин
 
Аватар для ГОСЕАН
 
Регистрация: 03.05.2007
Сообщений: 247
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
where dpos>=ДАТА1 and dpos<=ДАТА2
значения в ДАТА1 и ДАТА2 сформировать программно, формат записи согласно требованиям СУБД или в параметризированном виде
но ведь выбирает месяц и год, а не конечные даты...
ГОСЕАН вне форума Ответить с цитированием
Старый 09.06.2011, 08:20   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
то результаты должны быть между 26 февралем и 25 марта.
а откуда взялись цифры 25 и 26 ? Это фиксированные? Всегда 25 число текущего месяца и 26 предыдущего?!

А вообще, совет Аватар точно в цель! Где у Вас пользователь выбирает месяц и год? На форме Delphi ? Вот там формируйте из месяца и года две нужные даты и вызывайте запрос, передав туда эти две даты как параметры (параметрический запрос)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.06.2011, 08:23   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Сообщение от ГОСЕАН Посмотреть сообщение
но ведь выбирает месяц и год, а не конечные даты...
И что? Год, месяц и число в этих конечных датах прошит. А список полей в SELECT-е и условие во WHERE вполне независимые друг от друга конструкции

Добавил примерчик формирования граничных дат в вашем случае
Код:
var God,Mes: Word;
    Date1,Date2: TDateTime;
...
  God:=2011;
  Mes:=6;
...
  Date1:=EncodeDate(God,Mes,26);
  Date2:=IncMonth(Date1,1)-1;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 09.06.2011 в 09:31.
Аватар вне форума Ответить с цитированием
Старый 14.06.2011, 09:57   #6
ГОСЕАН
Форумчанин
 
Аватар для ГОСЕАН
 
Регистрация: 03.05.2007
Сообщений: 247
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
И что? Год, месяц и число в этих конечных датах прошит. А список полей в SELECT-е и условие во WHERE вполне независимые друг от друга конструкции

Добавил примерчик формирования граничных дат в вашем случае
Код:
var God,Mes: Word;
    Date1,Date2: TDateTime;
...
  God:=2011;
  Mes:=6;
...
  Date1:=EncodeDate(God,Mes,26);
  Date2:=IncMonth(Date1,1)-1;
как правильней реализовать?
var God,Mes: Word;
Date1,Date2: TDateTime;
begin
God:=Edit1.Text;
Mes:=Edit2.Text;
Date1:=EncodeDate(God,Mes,26);
Date2:=IncMonth(Date1,1)-1;
Edit33.Text:=Date1;
Edit34.Text:=Date2;
ГОСЕАН вне форума Ответить с цитированием
Старый 14.06.2011, 10:27   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
как правильней реализовать?
Как правильней организовать ЧТО ?!

Вы же про запросы вначале говорили? А теперь даты в Edit пытаетесь записать?
Вам что надо то?!!

если в Edit дату поместить, то по простому это так:
Цитата:
Код:
Edit33.Text:=DateToStr(Date1);
Edit34.Text:=DateToStr(Date2);
Только НЕ ВЗДУМАЙТЕ использовать Edit33 и Edit34 в качестве параметров запроса!!!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.06.2011, 13:10   #8
ГОСЕАН
Форумчанин
 
Аватар для ГОСЕАН
 
Регистрация: 03.05.2007
Сообщений: 247
По умолчанию

спасибо огромное за помощь!!!!
ГОСЕАН вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL запрос по дате и времени Demien БД в Delphi 12 29.12.2013 10:38
Запрос с условием периода времени Ksy Microsoft Office Access 8 06.05.2010 03:24
ADOQuery SQL запрос по времени, не по дате... Highlander1981 БД в Delphi 1 01.04.2010 01:08
составить запрос с учетом времени sinj SQL, базы данных 9 09.06.2009 13:41
SOL-запрос интервала даты и времени в Delphi DENIS_ БД в Delphi 5 23.12.2006 12:55