2016-11-08 152 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);