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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 02.02.2011, 15:46   #1
MrBobyara
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 28
По умолчанию Рассчитать аренду по дням.

Помогите начинающему !

Имеется две даты, начало аренды и окончание, по количеству дней нужно рассчитать стоимость.
Делаю в триггере.
Но не могу получить разницу между датами.
А так ничего сложного, нужно получить количество дней и умножить на стоимость аренды.
MrBobyara вне форума
Старый 02.02.2011, 16:31   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

СУБД какая? Какого типа поля, где Вы храните дату?

Без этой информации - ответ - просто "пальцем в небо"...
ну, попробуйте, например, так:
Код:
  SELECT (Trunc(Date2)-Trunc(Date1))*СтоимостьАренды from таблица
Serge_Bliznykov вне форума
Старый 02.02.2011, 16:37   #3
MrBobyara
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 28
По умолчанию

в Oracle.
Табличка аренда имеются столбцы дата начала аренды, и дата окончания и прайс куда записывается уже просчитанная стоимость аренды.
Поля типа дата, поле прайс типа инт.
А за совет спасибо.

Последний раз редактировалось MrBobyara; 02.02.2011 в 16:42.
MrBobyara вне форума
Старый 02.02.2011, 19:54   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
А за совет спасибо.
пожалуйста.
я так понимаю, что всё получилось?...
тему можно закрывать?
Serge_Bliznykov вне форума
Старый 02.02.2011, 23:10   #5
MrBobyara
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 28
По умолчанию

Получилось, но вот в триггере сделать не получается потому что стоимость на которую умножается берется из другой таблицы.
Я так понял Trunc() отсекает год.
MrBobyara вне форума
Старый 03.02.2011, 08:54   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Я так понял Trunc() отсекает год.
не-а... Trunc() отсекает дробную часть. При хранении datetime обычно используется вещественный тип данных - целое число - это число дней, прошедшее с определённой даты, а дробная часть - это время (число милисекунд от полуночи). поэтому Trunc() возвращает только дату, без временной составляющей.


Цитата:
триггере сделать не получается потому что стоимость на которую умножается берется из другой таблицы
А в чём сложность? Запросы в триггере под Ораклом можно выполнять 100%.
что не получается?


проверил. всё пучком.
единственное, если хотите изменять, то тип триггера должен быть ... BEFORE ...
Код:
CREATE OR REPLACE TRIGGER TR_ВАШАТАБЛИЦА_АРЕНДА BEFORE INSERT OR UPDATE OR DELETE ON ВАШАТАБЛИЦА
FOR EACH ROW
   
DECLARE pArendaValue ВашаТаблица.ВеличинаАренды%TYPE;

BEGIN
   select Аренда.Стоимость*(Trunc(:new.Дата2) - Trunc(:new.Дата2) )  into pArendaValue from Аренда
               where Аренда.Аренда_ID = :new.ID_аренды;
   :new.ВеличинаАренды := pArendaValue;
END;
p.s. можно обойтись и без переменной, но так наглядней...

Последний раз редактировалось Serge_Bliznykov; 03.02.2011 в 10:54.
Serge_Bliznykov вне форума
Старый 03.02.2011, 13:15   #7
MrBobyara
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 28
По умолчанию

Теперь разобрался ! Спасибо огромное, я просто не умел пользоваться select into !

Если будут небольшие вопросы, можно будет обращаться в личку ?
Тему можно закрывать !
MrBobyara вне форума
Старый 03.02.2011, 13:27   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Если будут небольшие вопросы, можно будет обращаться в личку ?
ну попробуйте.
Но, ГОРАЗДО удобнее (и эффективнее) если Вы создадите на форуме новую тему (с хорошей адекватной темой, ну, как в данном случае, например). Можете ссылку на эту тему послать в личку.
Чем это удобнее?.. Тем, что если я сутки не заглядывал на форум, то, с очень высокой долей вероятности, найдутся на форуме люди, которые смогут Вам помочь.
Кроме того, я банально могу быть некомпетентен в Вашей проблеме. А на форуме кто-то — дока в этом! Да и коллективный разум обычно сильнее...

удачи.
Serge_Bliznykov вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access. Создать базу данных "Торговый центр. Сдача в аренду торговых площадей." aleksandrdss Помощь студентам 1 17.12.2013 02:07
Формула не работает по четным дням vostok Microsoft Office Excel 16 23.01.2011 14:23
Привязка по дням недели i777 Microsoft Office Excel 2 02.11.2010 09:20
Счет ячеек с условиями по дням ru3000 Microsoft Office Excel 2 28.10.2009 23:08
Копирование файлов по дням недели!!! SUPERGREEN_SENSO Компоненты Delphi 5 30.09.2009 16:51