Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 只显示小时和分钟?_Sql_Sql Server - Fatal编程技术网

Sql 只显示小时和分钟?

Sql 只显示小时和分钟?,sql,sql-server,Sql,Sql Server,如果我单独获取小时和分钟,如何在字段中仅显示小时和分钟 [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

如果我单独获取小时和分钟,如何在字段中仅显示小时和分钟

[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]
[选择
努莫佩拉多博士,
总和(DATEDIFF(分钟,D.FechaSalida,D.FechaLlegada))/60作为\[Horas\],
总和(DATEDIFF(分钟,D.FechaSalida,D.FechaLlegada))%60为\[minuteos\]
从…起
特尔科佩拉多雷斯酒店
O.NumOperador=D.NumOperador上的内部联接trfDespacho D
哪里
O.cvetipoperador=2
而O.NumOperador=900200

和D.FechaSalida>='2017-03-10 00:00:00.000'和D.fechalegada如果您只想在结果中将hrs和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] 
选择
努莫佩拉多博士,
(铸造(总和(日期差(分钟,D.FechaSalida,D.FechaLlegada))/60为瓦查尔)
+ 
将(总和(DATEDIFF(分钟,D.FechaSalida,D.FechaLlegada))%60作为varchar)转换为时间
从…起
特尔科佩拉多雷斯酒店
O.NumOperador=D.NumOperador上的内部联接trfDespacho D
哪里
O.cvetipoperador=2
而O.NumOperador=900200

而D.FechaSalida>='2017-03-10 00:00:00.000'和D.fechalegada我想你想要这样的东西

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
选择
努莫佩拉多博士,
总和(DATEDIFF(分钟,D.FechaSalida,D.FechaLlegada))/60为[小时],
总和(DATEDIFF(分钟,D.FechaSalida,D.FechaLlegada))%60为[分钟]
转换(VARCHAR(10),转换(转换(转换(D.FechaSalida为浮点)-转换(D.FECHALEGADA为浮点)/86400.AS DATETIME),108)--86400等于1天
从…起
trkOperadores O内部连接trfDespacho D
关于O.NumOperador=D.NumOperador
哪里
O.cvetipoperador=2
而O.NumOperador=900200

D.FechaSalida>='2017-03-10 00:00:00.000'和D.FechaLlegadaIt根本不清楚您在这里尝试做什么。什么是“在单个字段中加入小时和分钟”意思是。这听起来是胡说八道。图片在哪里?向我们展示db模式、样本数据和预期输出。请阅读,这里是一个学习如何提高问题质量和获得更好答案的好地方。道歉没有附加,我附加了它。你为什么要将此转换为浮点进行数学计算?你应该使用DATEADD进行date math。因为在windows内部它保存为float,这样更容易工作。如果是不同的日期,这将是一个问题。那么为什么不使用dateadd(小时…)?谢谢,您可以放置:示例8:11非常感谢,我已经通过您的评论实现了,只需添加+':'+如果您将强制转换的比例指定为varchar,这个答案会更好。依赖默认大小不是一个很好的做法,因为默认大小可能会根据使用情况而有所不同。无论如何,这会得到+1
    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