在postgresql表中减去列

时间:2018-06-14 16:39:20

标签: sql postgresql datetime

我有一个包含四列ID,休息名称,时间已开始,完成时间的表格。

时间已开始且时间已完成的数据为没有时区的时间。

我想添加另一个名为Duration的列,并希望它tp减去时间已开始完成的时间。因此,在每行上已经在持续时间列上输入数据将显示中断的持续时间。

2 个答案:

答案 0 :(得分:2)

减去两个时间戳将返回interval,这是它们之间的差异,这应该适合您的账单:

SELECT *, time_finished - time_Started AS duration
FROM   mytable

答案 1 :(得分:2)

正如@Mureinik指出的那样,您可以在查询中对时间戳进行数学运算。要修复表,您需要在表中添加一个持续时间(或您喜欢的任何名称)列,并使用UPDATE查询填充该列。

首先,我将创建一个沙箱表来测试这些更改。当您对结果感到满意时,您可以修改实际表格。

将所有内容从mytable复制到test

CREATE TABLE test
AS
SELECT * 
FROM mytable

添加数据类型为区间

的新列
ALTER TABLE test
ADD COLUMN duration interval

填充新列

UPDATE test
SET duration = time_finished - time_started

如果您对test表中的结果感到满意,请在您的实时表格上运行相同的命令。