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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2011, 20:39   #1
reihtmonbern
Форумчанин
 
Регистрация: 08.01.2011
Сообщений: 102
По умолчанию Нахождение Разницы Между датами

Здравствуйте всем кто читает мою тему. У меня к вам такой вопрос: У меня есть БД ms acesss в Delphi я отображаю из неё данные ( две даты) с помощью DBEdit1(начальная дата) и DBEdit2 (конечная дата), как мне найти разницу между датами (конечная дата - начальная дата); Либо может вы мне подскажете код как в Delphi реализовать sql запрос на вычитание одной даты из другой. С БД работаю под ADO.:=)
reihtmonbern вне форума Ответить с цитированием
Старый 16.01.2011, 20:57   #2
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Разница между датами:=Конечная_дата - Начальная_дата
Пригодится также функция StrToDate()...
asmodey1 вне форума Ответить с цитированием
Старый 16.01.2011, 21:26   #3
reihtmonbern
Форумчанин
 
Регистрация: 08.01.2011
Сообщений: 102
По умолчанию

ну пасиб.. прям так скопирую в делфи и вставлю- супер ответ......
reihtmonbern вне форума Ответить с цитированием
Старый 16.01.2011, 21:40   #4
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Цитата:
Сообщение от reihtmonbern Посмотреть сообщение
ну пасиб.. прям так скопирую в делфи и вставлю- супер ответ......
Ну, если вы неспособны самостоятельно заменить 'Конечная_дата' на название вашего поля конечной даты и 'Начальная_дата' - на название вашего поля начальной даты, а также назначить имя поля для результата...
Тогда дайте структуру таблицы. Похоже, вы привыкли только к блюдечку с голубой каемочкой... ("Золотой теленок").

З.Ы. "Неотстойный" форум, по-вашему, это там где выкладывают готовые ответы ? А мозг развить хоть немного не хочется ?

Последний раз редактировалось asmodey1; 16.01.2011 в 21:42.
asmodey1 вне форума Ответить с цитированием
Старый 16.01.2011, 22:32   #5
reihtmonbern
Форумчанин
 
Регистрация: 08.01.2011
Сообщений: 102
По умолчанию

Честно признаться да … ну я не привык к тарелочки просто плохо програмлю в делфи просто хотелось бы увидеть код какой ни будь уже : я нашел несколько вариантов решения
1 способ:
Код:
var
dney:integer;
srokdate1,srokdate2:TTimeStamp;
begin
srokdate1:=datetimetotimestamp(now);
srokdate2:=datetimetotimestamp(Ваша дата тип tdatetime);
dney:=srokdate2.Date-srokdate1.Date; //считаем разницу дней
showmessage(inttostr(dney));

2 способ:
Код:
uses ..., DateUtils;
....................
procedure TForm1.Button1Click(Sender: TObject);
var
h, m, s, ms : Word;
tm1, tm2 : TDateTime;
begin
tm1 := StrToTime('20:40:00');
tm2 := StrToTime('15:30:00');
if tm1 > tm2 then tm2 := IncDay(tm2);
DecodeTime(tm1-tm2, h, m, s, ms);
ShowMessage(TimeToStr(EncodeTime(h, m, s, ms)));
end;

3 способ:
Код:
uses DateUtils, ...;

var NumOfDays:integer;
AnyDay: tdatetime;
...

NumOfDays:=DaysBetween(Today, AnyDay);


.....................................
.............
var
  fromdate, toDate : TDateTime;
begin
  fromDate := EncodeDate(2000, 02, 26);
  toDate   := EncodeDate(2000, 02, 29);
  //edit1.text:=IntToStr(DaysBetween(toDate, fromDate))

edit1.text:=IntToStr(DaysBetween(datetimepicker2.date,datetimepicker1.date))
end;
но я не знаю как изменить их чтобы из DBEdit информация в этот код влезала, может ты мне под скажешь. Буду крайне признателен.

Последний раз редактировалось Stilet; 17.01.2011 в 10:57.
reihtmonbern вне форума Ответить с цитированием
Старый 17.01.2011, 00:00   #6
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Если в DBEdit отображается в привычном виде - в виде строки, то я уже привел функцию - StrToDate().
Вот и получим, например для первого варианта :
Код:
dney:=StrToDate(DBEdit2.Text)-StrToDate(DBEdit1.Text); //считаем разницу дней
showmessage(inttostr(dney));
asmodey1 вне форума Ответить с цитированием
Старый 17.01.2011, 03:09   #7
reihtmonbern
Форумчанин
 
Регистрация: 08.01.2011
Сообщений: 102
По умолчанию

нет отображается в dbedit как дата 00.00.2011
reihtmonbern вне форума Ответить с цитированием
Старый 17.01.2011, 14:14   #8
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Цитата:
Сообщение от reihtmonbern Посмотреть сообщение
нет отображается в dbedit как дата 00.00.2011
Это и есть "отображается в привычном виде - в виде строки"...
asmodey1 вне форума Ответить с цитированием
Старый 17.01.2011, 14:42   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
reihtmonbern
Данные берутся из базы?
1) Сделай вычисляемое поле - разницу в датах
2) Какая именно разница нужна? В днях? Секундах? Наночасах?

В целом можно используя DateUtils функцию DaysBetween(Дата начальная, Дата конечная)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.01.2011, 16:19   #10
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Когда-то я вот так делал:
Код:
var
    days: Word;

begin
  days:=DaysBetween(Date(),    DMForm.ADO_Control.FieldByName('dateOfCheck').AsDateTime);
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
интервал между датами andrenisimus БД в Delphi 8 28.10.2010 14:05
Интервал между датами в структуре! Telec Общие вопросы C/C++ 0 22.03.2010 20:55
выборка между двумя датами UnChanter БД в Delphi 1 30.03.2009 21:09
Разница между датами kykysya Общие вопросы Delphi 8 26.03.2009 18:22
Разница между датами deenka БД в Delphi 3 31.01.2008 13:21