Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
C# 计算在SqlServer-C上使用暂停所花费的时间#_C#_Sql Server_Sql Server 2008_Sql Server 2012 - Fatal编程技术网

C# 计算在SqlServer-C上使用暂停所花费的时间#

C# 计算在SqlServer-C上使用暂停所花费的时间#,c#,sql-server,sql-server-2008,sql-server-2012,C#,Sql Server,Sql Server 2008,Sql Server 2012,嗨,伙计们,我对c#有这样的问题,然后我写了一个程序来计算员工的小时数,计算总小时数(Ore Fine-Ore inazio-Pausa),下面是计算的查询。我的问题是暂停必须以小时、分钟格式插入(例如,1.30)。如何计算员工处理以下查询的总时间?我希望我已经解释过了 Oreizio是日期时间 OreFine是日期时间 Pausa是浮动的 首先取这两个datetime列值之间的差值,然后用pausa*60将其减去(使其减至分钟) 查询 select [IdRisorseUmane], [IdU

嗨,伙计们,我对c#有这样的问题,然后我写了一个程序来计算员工的小时数,计算总小时数(Ore Fine-Ore inazio-Pausa),下面是计算的查询。我的问题是暂停必须以小时、分钟格式插入(例如,1.30)。如何计算员工处理以下查询的总时间?我希望我已经解释过了

Oreizio是日期时间

OreFine是日期时间

Pausa是浮动的



首先取这两个datetime列值之间的差值,然后用
pausa*60
将其减去(使其减至分钟)

查询

select [IdRisorseUmane], [IdUtente], [IdCantiere],
cast(cast((
datediff(minute, [OreInizio], [OreFine]) - ([Pausa] * 60)) as int) / 60 as varchar) + ':'  
+ right('0' + cast(cast((
datediff(minute, [OreInizio], [OreFine]) - ([Pausa] * 60)) as int) % 60 as varchar(2)), 2) 
as [TotaleOre]
from [RisorseUmane]
where [IdCantiere] = @id;

不要像您那样在单引号内传递值,其中IdCantiere='“+IdCantiere+”
它会受到SQL注入攻击。始终使用参数。

首先取这两个datetime列值之间的差值,然后用
pausa*60将其减去(使其减至分钟)

查询

select [IdRisorseUmane], [IdUtente], [IdCantiere],
cast(cast((
datediff(minute, [OreInizio], [OreFine]) - ([Pausa] * 60)) as int) / 60 as varchar) + ':'  
+ right('0' + cast(cast((
datediff(minute, [OreInizio], [OreFine]) - ([Pausa] * 60)) as int) % 60 as varchar(2)), 2) 
as [TotaleOre]
from [RisorseUmane]
where [IdCantiere] = @id;
不要像您那样在单引号内传递值,其中IdCantiere='“+IdCantiere+”

它会受到SQL注入攻击。始终使用参数。

试试这个

select 
  [IdRisorseUmane], 
  [IdUtente], 
  [IdCantiere],
  CONVERT(varchar(5), DATEADD(minute, DATEDIFF(minute, [OreInizio], [OreFine]) - cast([Pausa] * 60 as int), 0), 114) as [TotaleOre]
from [RisorseUmane]
where [IdCantiere] = @id;
试试这个

select 
  [IdRisorseUmane], 
  [IdUtente], 
  [IdCantiere],
  CONVERT(varchar(5), DATEADD(minute, DATEDIFF(minute, [OreInizio], [OreFine]) - cast([Pausa] * 60 as int), 0), 114) as [TotaleOre]
from [RisorseUmane]
where [IdCantiere] = @id;


如果我按照你说的做,你总是看到的结果是错误的-510@RiccardoPirani当前位置更新了我的答案。这不正确。从图片上看我有什么问题,从负面来看我hours@RiccardoPirani我更新了我的答案。在
DATEDIFF
函数中,我已交换了参数。很抱歉,我的错误是,客户端已经在使用该软件,我没有注意到时间格式是正确的,您所说的工作正常!如果我按照你说的做,你总是看到的结果是错误的-510@RiccardoPirani当前位置更新了我的答案。这不正确。从图片上看我有什么问题,从负面来看我hours@RiccardoPirani我更新了我的答案。在
DATEDIFF
函数中,我已交换了参数。很抱歉,我的错误是,客户端已经在使用该软件,我没有注意到时间格式是正确的,您所说的工作正常!
dbo.RisorseUmane.Pausa
列的数据类型是什么?float@bogdansahlean
dbo.RisorseUmane.Pausa
列的数据类型是什么?float@bogdansahlean@BogdanSahlean@RiccardoPirani我使用小提琴来选择转换(varchar(5),DATEADD(分钟,DATEDIFF(分钟,'2017-07-26 12:00:00','2017-07-26 18:00:00')-转换(1.5*60为整数),0),114)结果是
04:30
您的输入数据正确吗?非常感谢,我也解释了,事实是我的客户已经在使用该软件,但是输入了不正确的值thanks@RiccardoPirani我使用fiddle来选择CONVERT(varchar(5)、DATEADD(minute、DATEDIFF(分钟,'2017-07-26 12:00:00','2017-07-26 18:00:00')-cast(1.5*60作为int),0),114)结果是
04:30
您的输入数据正确吗?非常感谢,我也解释过了,事实是我的客户已经在使用该软件,输入了不正确的值,不过谢谢