使用SQL Sever 2005
从下面的查询我得到的总工作时间是指Outtime - Intime,假设当我减去第二天时间意味着显示错误的时间
查询
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
输出
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
第一个是正确的, 第二个工作时间应该给11:00:00小时,因为银泰18:00:00和外出时间是05:00:00(次日05:00:00),现在工作时间为18:00:00 - 05: 00:00给予13:00:00。它应该只给11:00:00
如何减去第二天的时间。
需要查询帮助
答案 0 :(得分:0)
不要使用减法,而是使用datediff
函数。
答案 1 :(得分:0)
如果外出时间少于时间,则在减去
之前将其加24