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

如何从生产时间列表中按周提取起止时间并计算总时长?

设备每周使用时间窗口计算方案

核心逻辑是按设备编号+周数分组,取每组最早的启动时间和最晚的结束时间,计算两者的时间差即为该周的使用窗口总时长。以下是两种常用实现方式:

一、Python Pandas 实现(适合本地表格数据)

import pandas as pd

# 读取数据(实际可替换为pd.read_csv/pd.read_excel)
data = pd.DataFrame({
    'Action': ['Setup', 'MFG', 'Setup', 'MFG'],
    'Date Time Start': ['9/12/2022  1:00', '9/12/2022  3:00', '9/13/2022 14:00', '9/13/2022 15:30'],
    'Date Time End': ['9/12/2022  3:00', '9/13/2022 13:00', '9/13/2022 15:30', '9/16/2022 22:00'],
    'Week Num': [1,1,1,1],
    'Lot Num': ['12345','12345','54321','54321'],
    'Machine Num': [101,101,101,101]
})

# 转换时间列为可计算的datetime格式
data['Date Time Start'] = pd.to_datetime(data['Date Time Start'], format='%m/%d/%Y  %H:%M')
data['Date Time End'] = pd.to_datetime(data['Date Time End'], format='%m/%d/%Y %H:%M')

# 按设备+周分组,提取最早启动、最晚结束时间
weekly_window = data.groupby(['Machine Num', 'Week Num']).agg(
    earliest_start=('Date Time Start', 'min'),
    latest_end=('Date Time End', 'max')
).reset_index()

# 计算总时长并格式化为HH:MM
weekly_window['Total Hours'] = (weekly_window['latest_end'] - weekly_window['earliest_start']).dt.total_seconds() / 3600
weekly_window['Total Duration'] = weekly_window['Total Hours'].apply(lambda x: f"{int(x)}:{int((x%1)*60):02d}")

# 输出结果
print(weekly_window)

运行后将得到周1的总时长为117:00,与需求一致。

二、SQL 实现(适合数据库存储的数据)

以下以MySQL为例,其他数据库仅需调整时间差函数:

SELECT 
    Machine_Num,
    Week_Num,
    MIN(Date_Time_Start) AS earliest_start,
    MAX(Date_Time_End) AS latest_end,
    TIMESTAMPDIFF(HOUR, MIN(Date_Time_Start), MAX(Date_Time_End)) AS total_hours,
    -- 格式化为HH:MM
    CONCAT(
        TIMESTAMPDIFF(HOUR, MIN(Date_Time_Start), MAX(Date_Time_End)),
        ':',
        LPAD(TIMESTAMPDIFF(MINUTE, MIN(Date_Time_Start), MAX(Date_Time_End)) % 60, 2, '0')
    ) AS total_duration
FROM 
    production_data
GROUP BY 
    Machine_Num, Week_Num;

注意事项

  • 确保时间列格式解析正确,若数据中有不同时间格式,需调整pd.to_datetime的format参数或SQL的时间转换函数
  • 若需计算实际运行时长(排除空闲间隙),则将分组逻辑改为累加每行的时长:sum(Date_Time_End - Date_Time_Start)
  • 多设备场景下必须按Machine Num分组,避免跨设备时间混淆

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:55:42