2016-11-08 151 views
0

所以我想創建一個表庫計算第三列如下:基於創建表的其他兩列

項目

ID Name StartDate ReturnDate Fee 
-- ---- --------- ---------- --- 
5 Book 5-5-2016 7-5-2016 2 
-- ---- --------- ---------- --- 

所以上面意味着有一本書,ID 5借來的5月5日至5月7日。 每次添加新行時,費用列應自動計算並插入,日期之間每天收取$ 1費用。

你是如何做到這一點的? 如何,當插入其餘數據時,如何讓SQL在創建元組時執行此計算(費用應自動更新)?

+3

是它的MySQL或Oracle? –

+0

我不明白你的意思。見http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query – Strawberry

+0

使用觸發器。 (或者,甚至更好,有一個看法,而不是。) – jarlh

回答

0

假設你日期列有日期類型

在MySQL中,你可以使用date_diff

SELECT ID, Name, StartDate, ReturnDate, DATEDIFF(ReturnDate,StartDate) AS Fee 
from your_table 

甲骨文簡單地減去日期

SELECT ID, Name, StartDate, ReturnDate, 
ReturnDate - StartDate Fee 
from your_table 
0

你最好創建表先更新費列

DDL應該是

create table library (id bigint not null, name varchar(100),startDate date, returnDate date, fee int); 

更新SQL是

update library set fee=DATEDIFF(ReturnDate,StartDate);