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

如何用SQL计算Intime与Outtime两个时间的时长差?

如何用SQL计算Intime与Outtime的时长

你的数据表结构如下:

IDNameClassDateIntimeOuttimeHours
1001Paul1st09-12-20228:30 AM4:30 PM8

下面针对不同主流数据库,给出计算Intime与Outtime之间时长(即Hours列的取值逻辑)的实现方法:

MySQL 实现方式

先将Date、Intime/Outtime拼接为完整的日期时间字符串,转成datetime类型后,用TIMESTAMPDIFF计算小时差:

SELECT 
    ID,
    Name,
    Class,
    Date,
    Intime,
    Outtime,
    TIMESTAMPDIFF(HOUR, 
                  STR_TO_DATE(CONCAT(Date, ' ', Intime), '%m-%d-%Y %h:%i %p'),
                  STR_TO_DATE(CONCAT(Date, ' ', Outtime), '%m-%d-%Y %h:%i %p')) AS Hours
FROM Table1;
  • STR_TO_DATE:将字符串按指定格式(%m-%d-%Y对应月-日-年,%h:%i %p对应12小时制带AM/PM的时间)转换为datetime类型
  • TIMESTAMPDIFF:直接返回两个时间的小时差值

SQL Server 实现方式

通过CAST将拼接后的日期时间字符串转为datetime2类型,再用DATEDIFF计算小时差:

SELECT 
    ID,
    Name,
    Class,
    Date,
    Intime,
    Outtime,
    DATEDIFF(HOUR, 
             CAST(CONCAT(Date, ' ', Intime) AS DATETIME2),
             CAST(CONCAT(Date, ' ', Outtime) AS DATETIME2)) AS Hours
FROM Table1;
  • SQL Server的CAST可以直接识别带AM/PM的12小时制时间格式
  • DATEDIFF:指定计算单位为HOUR,返回两个时间的小时差

PostgreSQL 实现方式

用TO_TIMESTAMP将拼接字符串转为时间戳,相减得到时间间隔后提取小时数:

SELECT 
    ID,
    Name,
    Class,
    Date,
    Intime,
    Outtime,
    EXTRACT(HOUR FROM (
        TO_TIMESTAMP(CONCAT(Date, ' ', Outtime), 'MM-DD-YYYY HH:MI AM') -
        TO_TIMESTAMP(CONCAT(Date, ' ', Intime), 'MM-DD-YYYY HH:MI AM')
    )) AS Hours
FROM Table1;
  • 如果需要保留小数小时(比如半小时),可以用EXTRACT(EPOCH FROM (...))/3600计算精确时长,再按需取整

Oracle 实现方式

将拼接字符串转为DATE类型,日期相减得到天数后乘以24转为小时数:

SELECT 
    ID,
    Name,
    Class,
    Date,
    Intime,
    Outtime,
    (TO_DATE(CONCAT(Date, ' ', Outtime), 'MM-DD-YYYY HH:MI AM') -
     TO_DATE(CONCAT(Date, ' ', Intime), 'MM-DD-YYYY HH:MI AM')) * 24 AS Hours
FROM Table1;
  • Oracle中日期类型相减的结果是天数,乘以24即可转换为小时数

注意事项

  • 上述方法均结合了Date列,能避免跨天场景下的计算错误(比如Outtime为次日凌晨的情况)
  • 如果Intime/Outtime本身已是时间类型(而非字符串),可省略字符串拼接步骤,直接结合Date列构造完整日期时间进行计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:45:34