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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2008, 21:11   #1
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию Манипуляции с датой в запросе

Доброго времени суток.
Осталось выполнить 2 последних запроса:

1. Количество книг выданных за выбранный месяц года.
2. Удаление сведений о выдачах за указанный год.

Мне говорили, что дату можно разделить на 3 переменные, содержащие сведения: день, месяц, год. Это DecodeDate функция...

Подскажите, как мне проапперировать этими данными и переменными в запросе? Как например в запросе разделить дату и сверить у неё именно год или месяц с переменной?
Arkuz вне форума Ответить с цитированием
Старый 11.11.2008, 21:23   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

DecodeDate и EncodeDate используют, например, для получения нужной даты из исходной.
Например, если нужно получить дату, отстающую от текущей ровно на месяц, делаем:
Код:
DecodeDate(Now,year,month,day);
month:=month-1;
newdate:=EncodeDate(year,month,day);
Детали - по F1. Или вы так и не научились нажимать эту клавишу?

А вопрос с датами в запросе вроде бы уже обсуждали...
mihali4 вне форума Ответить с цитированием
Старый 11.11.2008, 21:32   #3
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Разницу в месяц можно обойти более простым путём - просто к переменной даты прибавить или отнять 30. Например date:=now+30;

И вот у меня ещё вопрос созрел. Как можно узнать количество дней между датами?

например: 11.11.2008 - 12.08.2008 = 31.03.1900
а как получить именно количество дней между датами, а не саму дату?

Последний раз редактировалось Arkuz; 11.11.2008 в 21:42.
Arkuz вне форума Ответить с цитированием
Старый 11.11.2008, 21:37   #4
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

mihali4, мне нужно посмотреть пример запроса с использованием функций DecodeDate и EncodeDate.
Не могли бы вы продемонстрировать...?
Я не знаю как в самом запросе раскодировать дату, сравнить её с раскодированной другой датой...
Arkuz вне форума Ответить с цитированием
Старый 11.11.2008, 22:07   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Разницу в месяц можно обойти более простым путём - просто к переменной даты прибавить или отнять 30. Например date:=now+30;
Ну-ну... Блажен, кто верует... К финансовым программам вас подпускать категорически нельзя...
Цитата:
Как можно узнать количество дней между датами?
DecodeDate(date2-date,...
Цитата:
пример запроса с использованием функций DecodeDate и EncodeDate
DecodeDate и EncodeDate в запросе не участвуют. Они используются для подготовки значений, с которыми идет сравнение в запросе. В запросе можно использовать DateToStr...
mihali4 вне форума Ответить с цитированием
Старый 11.11.2008, 22:40   #6
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Ну-ну... Блажен, кто верует... К финансовым программам вас подпускать категорически нельзя...
Ювелирная точность в библиотеке не нужна...

Цитата:
Сообщение от mihali4 Посмотреть сообщение
DecodeDate(date2-date,...
Это я и так знаю... Но только если даты у меня различаются на 3 месяца 15 дней как это выразить именно в количестве дней?

Когда я декодирую дату год и месяц не учитывается просто показывает разницу в днях

Цитата:
Сообщение от mihali4 Посмотреть сообщение
DecodeDate и EncodeDate в запросе не участвуют. Они используются для подготовки значений, с которыми идет сравнение в запросе. В запросе можно использовать DateToStr...
Помогите с запросом... пример покажите какой-нибудь. Я что-то никак не представлю как это всё дело в запросе описать...
Arkuz вне форума Ответить с цитированием
Старый 11.11.2008, 23:06   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Это я и так знаю... Но только если даты у меня различаются на 3 месяца 15 дней как это выразить именно в количестве дней?
month-3
day-15
Encode(...
Цитата:
В запросе можно использовать DateToStr...
Помогите с запросом... пример покажите какой-нибудь
Так показывал уже!
http://www.programmersforum.ru/showthread.php?t=29044
mihali4 вне форума Ответить с цитированием
Старый 11.11.2008, 23:19   #8
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
month-3
day-15
Encode(...
я в общем догадался как сделать...

Код:
 DecodeDate(now,y,m,d);
 DecodeDate(Date1,y1,m1,d1);
 result:=abs((y-y1)*12)+abs(m-m1);// годы в месяцы
 result:=result*30; // месяцы в дни
 result:=result+abs(d-d1); // дни из месяцев + разность дней между искомыми датами
Arkuz вне форума Ответить с цитированием
Старый 11.11.2008, 23:23   #9
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение

Так показывал уже!
Видимо я доходчиво не могу объяснить что мне нужно... Ладно, завтра попробую сделать, если не получится попробую объяснить подробно, что я именно не могу понять...


СПАСИБО ЗА ПОМОЩЬ!!!
Arkuz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с датой Dunpeal Общие вопросы Delphi 5 15.05.2008 12:05
Работа с датой [RR]Reaction Общие вопросы Delphi 3 07.04.2008 21:52
массив сохранение информации и манипуляции oblom Общие вопросы C/C++ 19 04.02.2008 02:28
Несовпадение с датой RoZi Помощь студентам 26 28.11.2007 13:05
Манипуляции с датой и временем. Tatyana БД в Delphi 16 29.06.2007 19:19