0

私はレンタカーシステムに取り組んでいます。テーブル 'Hire' には 、 などのフィールドがありますhireDatereturnDate家賃を計算して、その値をデータベース (同じテーブル) に自動的に挿入できるようにしたいと考えています。

これら 2 つの日付フィールドを減算できるかどうか疑問に思っています。これから得られる値に特定の数 (たとえば 300) を掛けて、' Rent_Due' という別の属性に自動的に追加できます。アイデアは、日数を取得し、それに特定の数を掛けることによって、合計家賃を計算することです。したがって、雇用が発生するたびに、雇用日と返却日を入力するだけで、Rent Due 属性が自動的に入力されます。ひょっとしてこれは可能ですか?

助けを求めるためにどのような情報を提供する必要があるかわかりません。ERD の画像が必要な場合はお知らせください。ありがとう!

4

4 に答える 4

1

日単位で計算したい差を仮定すると、これはうまくいくはずです。

INSERT INTO yourTable (hireDate, returnDate, Rent_Due) VALUES
(StartDate. EndDate, DATEDIFF(EndDate, StartDate)*300)
于 2013-01-02T10:56:00.223 に答える
0

個人的には、データベースに計算フィールドを含めることを避け、正規化を維持しようとします。

代わりに、レンタル期間と価格のビューを使用できます。

例は次のとおりです。

create view hire_duration as (
  select hireId, hireDate, datediff(returnDate,hireDate) as duration
  from Hire
);

(これは、Hire テーブルに、hireId という主キーがあることを前提としています) 期間に一定の定数を掛けることで、ビューを簡単に変更して、雇用コストも持つことができます。さまざまな雇用率の柔軟性を持ちたいのですが、SQL で率をハードコーディングしたくありません。

于 2013-01-02T10:57:38.547 に答える
0

次のクエリで結果を取得できる別のフィールドを作成する必要はありません。

select (datediff(hireDate, returnDate)*300) as rent,hireDate,returnDate from Hire;
于 2013-01-02T11:00:47.383 に答える
0

このようなものをお探しですか?

挿入前イベント:

DELIMITER $$
    CREATE TRIGGER name_of_before_insert_trigger BEFORE INSERT ON name_of_table
    FOR EACH ROW BEGIN
     SET NEW.Rent_Due = DATEDIFF(NEW.returnDate, NEW.hireDate) * 300;
    END;
   $$
DELIMITER ;

更新前イベント:

DELIMITER $$
    CREATE TRIGGER name_of_before_update_trigger BEFORE UPDATE ON name_of_table
    FOR EACH ROW BEGIN
     SET NEW.Rent_Due = DATEDIFF(NEW.returnDate, NEW.hireDate) * 300;
    END;
   $$
DELIMITER ;

別の表で外注することもできる日次料金:

DELIMITER $$
    CREATE TRIGGER name_of_before_insert_event_trigger BEFORE INSERT ON name_of_table
    FOR EACH ROW BEGIN
     SET NEW.Rent_Due = DATEDIFF(NEW.returnDate, NEW.hireDate) * (SELECT value FROM name_of_price_table LIMIT 1);
    END;
   $$
DELIMITER ;
于 2013-01-02T13:04:50.537 に答える