我能够通过此命令计算停留的天数。
select trunc(DISCHARGE_DATE) - ADMISSION_DATE
from tblhotel;
但是,我想将其存储在同一个表中的另一列中。如何使用此输出存储到另一列中,假设称为“days_stayed'。
或者我可以将其用作该列的约束吗?
答案 0 :(得分:0)
您可以尝试这样的事情:
INSERT INTO tblhotel (days_stayed)
VALUES (TRUNC(DISCHARGE_DATE) - ADMISSION_DATE);
这假设您要插入一行。如果要将计算的值插入到上面SELECT查询中计算数据的同一行,则需要使用UPDATE语句。
UPDATE tblhotel
SET days_stayed = TRUNC(DISCHARGE_DATE) - ADMISSION_DATE;
如果你没有上帝列表中的days_stayed列,你需要添加一个。
ALTER TABLE tblhotel ADD (days_stayed NUMERIC);
希望这有帮助!
编辑: 但是,我应该提一下,通常糟糕的数据库设计是在表中包含计算字段,因为它们会添加额外不需要的存储,并且可能导致数据不一致(以及其他原因)。通常最好根据需要计算它,所以如果你想定期得到这个值,我建议你创建一个存储过程来获取它,或者在这个表上创建一个每次获取它的视图。 像这样:
CREATE VIEW tblhotels_view AS
SELECT DISCHARGE_DATE, ADMISSION_DATE,
TRUNC(DISCHARGE_DATE) - ADMISSION_DATE AS DAYS_STAYED
FROM tblhotel;
您可以根据需要在SELECT中添加任何字段。然后,您只需要在需要此字段时查询tblhotels_view:
SELECT * FROM tblhotels_view;