You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在数据表列中插入计算值:将ended_at - started_at存入duration_seconds列

操作方案

你需要根据使用的数据库类型选择对应的时间差计算函数,以下是不同场景的实现方式:

存量数据批量填充

如果是要给表中已经存在的、已录入started_at和ended_at的行补填duration_seconds的值,使用UPDATE语句:

  • MySQL环境
UPDATE 你的表名 
SET duration_seconds = TIMESTAMPDIFF(SECOND, started_at, ended_at);
  • PostgreSQL环境
UPDATE 你的表名
SET duration_seconds = EXTRACT(EPOCH FROM (ended_at - started_at))::INTEGER;
  • SQL Server环境
UPDATE 你的表名
SET duration_seconds = DATEDIFF(SECOND, started_at, ended_at);

新数据插入时同步计算

插入新行时可以直接在插入语句中嵌入计算逻辑,无需提前算出结果:

-- 示例为MySQL语法,其他数据库替换对应时间差函数即可
INSERT INTO 你的表名 (字段1, 字段2, started_at, ended_at, duration_seconds)
VALUES ('xxx', 'xxx', '2024-01-01 10:00:00', '2024-01-01 10:05:30', TIMESTAMPDIFF(SECOND, started_at, ended_at));

可选:设置自动计算列

如果希望后续数据库自动维护duration_seconds的值,不需要每次手动写计算逻辑,可以将该字段设为生成列:

  • MySQL示例
ALTER TABLE 你的表名
MODIFY COLUMN duration_seconds INT GENERATED ALWAYS AS (TIMESTAMPDIFF(SECOND, started_at, ended_at)) STORED;
  • PostgreSQL示例
ALTER TABLE 你的表名
ADD COLUMN duration_seconds INT GENERATED ALWAYS AS (EXTRACT(EPOCH FROM (ended_at - started_at))::INTEGER) STORED;

内容的提问来源于stack exchange,提问作者Neville Jeffree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:57:04