【问题标题】:SQL Query to calculate Total in hh:mm:ss FormatSQL 查询以 hh:mm:ss 格式计算 Total
【发布时间】:2016-10-17 22:35:59
【问题描述】:

我有一个查询,我正在计算以下三个操作之间的时间差

Production stop & Production start in hh:mm:ss format
Quality stop and quality start in hh:mm:ss format
shipping stop and shipping start in hh:mm:ss format

我想要一些 hh:mm:ss 格式的所有三个时间差。我如何在 SQL 查询中做到这一点?

我的查询如下所示:

SELECT 

L.LOT_ID , 
L.LOT_ID_RECORD,
L.MAT_ID
L.QUANTITY

CONVERT(VARCHAR,LR.DT_PRODUCT_START,120) AS PRODUCTION_START,

ISNULL(CONVERT(VARCHAR,LR.DT_PRODUCT_ED,120) , 'NA' ) AS PRODUCTION_STOP,

convert(varchar(5),DateDiff(s, LR.DT_PRODUCT_START, LR.DT_PRODUCT_END)/3600)+':'+convert(varchar(5),DateDiff(s, LR.DT_PRODUCT_START, LR.DT_PRODUCT_END)%3600/60)+':'+convert(varchar(5),(DateDiff(s, LR.DT_PRODUCT_START, LR.DT_PRODUCT_END)%60)) as PRODUCTION_TIME,

CONVERT(VARCHAR,QC.QC_START,120) AS QC_START,

CONVERT(VARCHAR,QC.QC_CLOSE,120) AS QC_CLOSE,

convert(varchar(5),DateDiff(s, QC.QC_START ,QC.QC_CLOSE)/3600)+':'+convert(varchar(5),DateDiff(s, QC.QC_START , QC.QC_CLOSE)%3600/60)+':'+convert(varchar(5),(DateDiff(s, QC.QC_START,QC.QC_CLOSE)%60)) as QUALITY_TIME,

convert(varchar(5),DateDiff(s, S.SHIPPING_START, S.SHIPPING_CLOSE)/3600)+':'+convert(varchar(5),DateDiff(s, S.SHIPPING_START, S.SHIPPING_CLOSE)%3600/60)+':'+convert(varchar(5),(DateDiff(s, S.SHIPPING_START, S.SHIPPING_CLOSE)%60)) as SHIPPING_TIME

FROM XYZ 

我想对PRODUCTION_TIME , QUALITY_TIME and SHIPPING_TIME 求和,结果应该是hh:mm:ss 格式。

我不确定如何实现?你能帮忙吗?

问候!

【问题讨论】:

  • 可能类似于CAST(DATEADD(SECOND, SUM(stuff), 0) AS TIME(0))。编辑:在这种情况下,“stuff”将是您想要求和的每个事物的 datediff(second, ...) 值。
  • 如果结果超过 24 小时会怎样?
  • 我需要 3 次。如果结果总和超过 24 小时,则无关紧要。喜欢 28:50:33
  • 您的表中(PRODUCTION_TIME、QUALITY_TIME 和 SHIPPING_TIME)的数据类型是什么?

标签: sql sql-server datetime


【解决方案1】:

您发布的查询似乎不完整。恕我直言,最好的解决方法是将三个字段(要总结)转换为秒,然后添加它们。最后将秒重新转换为 HH:MM:SS。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    相关资源
    最近更新 更多