基于创建表的其他两列
问题描述:
所以我想创建一个表库计算第三列如下:基于创建表的其他两列
项目
ID Name StartDate ReturnDate Fee
-- ---- --------- ---------- ---
5 Book 5-5-2016 7-5-2016 2
-- ---- --------- ---------- ---
所以上面意味着有一本书,ID 5借来的5月5日至5月7日。 每次添加新行时,费用列应自动计算并插入,日期之间每天收取$ 1费用。
你是如何做到这一点的? 如何,当插入其余数据时,如何让SQL在创建元组时执行此计算(费用应自动更新)?
答
假设你日期列有日期类型
在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
答
你最好创建表先更新费列
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);
是它的MySQL或Oracle? –
我不明白你的意思。见http://meta.*.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query – Strawberry
使用触发器。 (或者,甚至更好,有一个看法,而不是。) – jarlh