2017-04-07 109 views
1

如何只顯示小時和分鐘在外地,如果我讓他們單獨只顯示小時和分鐘?

[SELECT 
    D.numOperador, 
    SUM(DATEDIFF(MINUTE, D.FechaSalida, D.FechaLlegada))/60 AS \[Horas\] , 
    SUM(DATEDIFF(MINUTE, D.FechaSalida, D.FechaLlegada)) % 60 AS \[Minutos\] 

    FROM 
    trkOperadores O 
    INNER JOIN trfDespacho D ON O.NumOperador = D.numOperador 
WHERE 
    O.cveTipoOperador = 2 
    AND O.NumOperador = 900200 
    AND D.FechaSalida>='2017-03-10 00:00:00.000' AND D.FechaLlegada<='2017-03-11 00:00:00.000' 
GROUP BY 
    D.NumOperador; 
GO] 

Time

+0

這是不完全清楚你正試圖在這裏做。 –

+0

什麼是「在單個字段中加入小時和分鐘」的意思。這是無稽之談。 – JNevill

+0

圖片在哪裏? –

回答

2

如果你只是想在結果中加入小時,MNS在一起,串聯兩者:

SELECT 
D.numOperador, 
    (cast (SUM(DATEDIFF(MINUTE, D.FechaSalida, D.FechaLlegada))/60 as varchar) 
+ 
cast (SUM(DATEDIFF(MINUTE, D.FechaSalida, D.FechaLlegada)) % 60 AS varchar) ) as time 

FROM 
trkOperadores O 
INNER JOIN trfDespacho D ON O.NumOperador = D.numOperador 
WHERE 
O.cveTipoOperador = 2 
AND O.NumOperador = 900200 
AND D.FechaSalida>='2017-03-10 00:00:00.000' AND D.FechaLlegada<='2017-03-11 00:00:00.000' 
GROUP BY 
D.NumOperador; 
GO] 
+0

謝謝,您可以放置​​:例如8:11 – Molitaa

+0

非常感謝,我已經實現了您的評論,只需添加+':'+ – Molitaa

+1

如果您將投影的比例指定爲varchar,則此答案會更好。依賴於默認大小並不是一個很好的做法,因爲默認大小可以根據使用情況而有所不同。無論如何獲得+1 –

0

我假設你想要這樣的東西。

DECLARE @D1 DATETIME = '20170401' 
DECLARE @D2 DATETIME = '20170402 00:05:00' 

SELECT RIGHT('00' + CAST(DATEDIFF(MINUTE, @D1, @D2) /60 AS VARCHAR(2)) , 2) + ':' + RIGHT('00' + CAST(DATEDIFF(MINUTE, @D1, @D2) % 60 AS VARCHAR(2)) , 2) 

-- 24:05 
0
SELECT 
    D.numOperador, 
    SUM(DATEDIFF(MINUTE, D.FechaSalida, D.FechaLlegada))/60 AS [Horas] , 
    SUM(DATEDIFF(MINUTE, D.FechaSalida, D.FechaLlegada)) % 60 AS [Minutos] 

    CONVERT(VARCHAR(10),CAST(CAST (D.FechaSalida AS FLOAT) - CAST (D.FechaLlegada AS FLOAT)/86400. AS DATETIME),108) --86400 equal 1 day 

    FROM 
    trkOperadores O  INNER JOIN trfDespacho D 
    ON O.NumOperador = D.numOperador 
WHERE 
    O.cveTipoOperador = 2 
    AND O.NumOperador = 900200 
    AND D.FechaSalida>='2017-03-10 00:00:00.000' AND D.FechaLlegada<='2017-03-11 00:00:00.000' 
GROUP BY 
    D.NumOperador; 
GO 
+0

爲什麼你把這個轉換成浮動數學?您應該使用DATEADD進行日期數學計算。 –

+0

由於Windows內部它保存爲浮點,因此更容易以這種方式工作。如果是在不同的日子,這將是一個問題。 –

+0

那麼爲什麼不使用dateadd(小時...)? –