C# 计算在SqlServer-C上使用暂停所花费的时间#
嗨,伙计们,我对c#有这样的问题,然后我写了一个程序来计算员工的小时数,计算总小时数(Ore Fine-Ore inazio-Pausa),下面是计算的查询。我的问题是暂停必须以小时、分钟格式插入(例如,1.30)。如何计算员工处理以下查询的总时间?我希望我已经解释过了 Oreizio是日期时间 OreFine是日期时间 Pausa是浮动的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
首先取这两个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@bogdansahleandbo.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
您的输入数据正确吗?非常感谢,我也解释过了,事实是我的客户已经在使用该软件,输入了不正确的值,不过谢谢