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

如何在SQL查询中将十进制时长值与时间值相加计算结束时间

实现时间与十进制时长相加计算结束时间

已知数据表包含非空列ARRIVAL_TIME(时间类型)和DURATION(DECIMAL(4,2),取值为1、1.25、1.5、1.75),需要将ARRIVAL_TIME与DURATION相加得到结束时间(例如08:00:00加1.25得到09:15:00),以下是主流数据库的实现方案:

MySQL

利用ADDTIME和SEC_TO_TIME函数,将十进制时长转换为秒后再转为时间格式,与原时间相加:

SELECT 
  ARRIVAL_TIME,
  DURATION,
  ADDTIME(ARRIVAL_TIME, SEC_TO_TIME(DURATION * 3600)) AS END_TIME
FROM your_table;

原理:DURATION * 3600将小时转为总秒数,SEC_TO_TIME把秒数转为HH:MM:SS格式,最后通过ADDTIME完成时间相加。

PostgreSQL

通过INTERVAL类型实现时长转换,直接与时间相加:

SELECT 
  ARRIVAL_TIME,
  DURATION,
  ARRIVAL_TIME + INTERVAL '1 hour' * DURATION AS END_TIME
FROM your_table;

原理:将十进制时长乘以1小时的时间间隔,PostgreSQL会自动处理小数部分(如0.25小时=15分钟),直接与原时间相加得到结果。

SQL Server

使用DATEADD函数,将十进制时长转为总分钟数后直接添加到原时间:

SELECT 
  ARRIVAL_TIME,
  DURATION,
  DATEADD(MINUTE, DURATION * 60, ARRIVAL_TIME) AS END_TIME
FROM your_table;

原理:DURATION * 60将小时转为总分钟数,DATEADD直接把分钟数添加到原时间上,自动处理进位。

以上方案均可满足需求,代入示例值08:00:00和1.25,计算结果均为09:15:00。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 23:37:37