Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 Server - Fatal编程技术网

Sql server 减去时间问题?

Sql server 减去时间问题?,sql-server,Sql Server,使用sqlsever2005 从下面的查询中,我得到的总工作时间意味着休息时间-时间,假设我减去第二天的时间意味着显示错误的时间 质疑 Select ID, Normal_Intime, Normal_Outtime, Date, Intime, outtime, CONVERT(char(8), CASE WHEN InTime < Outtime THEN CASE WHEN OutTime > Normal_Outtime THEN CAST(Normal_Outtime AS

使用sqlsever2005

从下面的查询中,我得到的总工作时间意味着休息时间-时间,假设我减去第二天的时间意味着显示错误的时间

质疑

Select ID, Normal_Intime, Normal_Outtime, Date, Intime, outtime, CONVERT(char(8), CASE WHEN InTime < Outtime THEN CASE WHEN OutTime > Normal_Outtime THEN CAST(Normal_Outtime AS datetime) ELSE CAST(Outtime AS datetime) END - CASE WHEN InTime < Normal_Intime THEN CAST(Normal_Intime AS datetime) ELSE CAST(Intime AS datetime) END ELSE CASE WHEN InTime < Normal_Intime THEN CAST(Normal_Intime AS datetime) ELSE CAST(Intime AS datetime) END - CASE WHEN OutTime > Normal_Outtime THEN CAST(Normal_Outtime AS datetime) ELSE CAST(Outtime AS datetime) END END, 8) AS workedtime from table1
第一个是对的,, 第二个工作时间应为11:00:00,因为时间为18:00:00,休息时间为第二天05:00:00,现在工作时间为18:00:00-05:00:00,工作时间为13:00:00。应该只有11:00:00

如何减去第二天的时间


需要查询帮助

不要使用减法,而是使用datediff函数。

如果超时时间小于及时时间,则在减法之前向其添加24

我认为这将比使用datediff函数更快如何添加24。你能告诉medateparthour,[Normal_outtime]+24仍在varchar字段中存储日期吗?
ID Normal_Intime, Normal_Outtime, Date Intime, Outtime, Worktime

01  10:00:00 19:00:00 01/09/2009 08:20:56 15:40:15  05:40:15
01  18:00:00 05:00:00 02/09/2009 15:00:59 08:20:16  13:00:00