Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 Server中的时差_Sql_Sql Server - Fatal编程技术网

SQL Server中的时差

SQL Server中的时差,sql,sql-server,Sql,Sql Server,我在SQL Server中有一个返回时间差的函数: create function [dbo].[GetTimeDiffrence] (@dutyHour time, @ShiftTime time) returns time(0) as begin declare @result time(0); declare @null time; set @null = '00:00:00'; select @result = case

我在SQL Server中有一个返回时间差的函数:

create function [dbo].[GetTimeDiffrence] (@dutyHour time, @ShiftTime time)
returns time(0)
as 
begin
     declare @result time(0);
     declare @null time;

     set @null = '00:00:00';

     select
         @result = case
                      when DATEDIFF(SECOND, @dutyHour, @ShiftTime) <= 0
                        then DATEADD(SECOND, -DATEDIFF(SECOND, @dutyHour, @ShiftTime), @null)
                      when DATEDIFF(SECOND, @dutyHour, @ShiftTime) > 0
                        then DATEADD(SECOND,  DATEDIFF(SECOND, @dutyHour, @ShiftTime), @null)
                   end

     return @result;
end
GO
我得到一个错误:

从字符转换日期和/或时间时转换失败 绳子


还有,我怎样才能得到负数的差值呢?

问题在于您的
时间
参数。声明为时间的变量,范围从00:00:00到23:59:59。看一看


发送“大于”24小时的值将不起作用。

问题在于
时间
参数。声明为时间的变量,范围从00:00:00到23:59:59。看一看


发送“大于”24小时的值将不起作用。

问题在于
时间
参数。声明为时间的变量,范围从00:00:00到23:59:59。看一看


发送“大于”24小时的值将不起作用。

问题在于
时间
参数。声明为时间的变量,范围从00:00:00到23:59:59。看一看



发送“更大”的值24小时以上不起作用。

使用间隔数据类型而不是时间?@jarlh在SQL Server中是否有这样的数据类型?使用间隔数据类型而不是时间?@jarlh在SQL Server中是否有这样的数据类型?使用间隔数据类型而不是时间?@jarlh在SQL Server中是否有这样的数据类型?使用间隔数据类型而不是时间?@jarlh是否有这样的数据类型SQL Server中的数据类型?在db中存储48小时30分钟的最佳方式是什么。@Vikky您真的想存储它吗?或者你真的想找出两个日期之间的差异?我有一个假设,实际上是员工加班,如果工作时间是08:00:00,而他只工作了07:30:00,我必须显示-00:30:00,在月报上,我必须从总数中扣除这半个小时overtime@Vikky您是否在表上运行此函数?我觉得你可以用一个简单的聚合来解决你的问题。您是否有一个带有
员工id
每天工作时间
或类似内容的表格?用db存储48小时30分钟的最佳方式是什么。@Vikky您真的想存储这个吗?或者你真的想找出两个日期之间的差异?我有一个假设,实际上是员工加班,如果工作时间是08:00:00,而他只工作了07:30:00,我必须显示-00:30:00,在月报上,我必须从总数中扣除这半个小时overtime@Vikky您是否在表上运行此函数?我觉得你可以用一个简单的聚合来解决你的问题。您是否有一个带有
员工id
每天工作时间
或类似内容的表格?用db存储48小时30分钟的最佳方式是什么。@Vikky您真的想存储这个吗?或者你真的想找出两个日期之间的差异?我有一个假设,实际上是员工加班,如果工作时间是08:00:00,而他只工作了07:30:00,我必须显示-00:30:00,在月报上,我必须从总数中扣除这半个小时overtime@Vikky您是否在表上运行此函数?我觉得你可以用一个简单的聚合来解决你的问题。您是否有一个带有
员工id
每天工作时间
或类似内容的表格?用db存储48小时30分钟的最佳方式是什么。@Vikky您真的想存储这个吗?或者你真的想找出两个日期之间的差异?我有一个假设,实际上是员工加班,如果工作时间是08:00:00,而他只工作了07:30:00,我必须显示-00:30:00,在月报上,我必须从总数中扣除这半个小时overtime@Vikky您是否在表上运行此函数?我觉得你可以用一个简单的聚合来解决你的问题。您是否有一个包含员工id、每天工作时间、每天工作时间等类似内容的表格?
SELECT [dbo].[GetTimeDiffrence_test] ('48:00:00','48:30:00')