2009-10-02 41 views
0

使用SQL Server 2000減去時間價值問題?

查詢

Select id, CONVERT(char(8), CASE WHEN DateAdd(Day, - DateDiff(Day, 0, OutTime), OutTime) > Normal_Outtime THEN Cast(Normal_Outtime AS datetime) ELSE DateAdd(Day, - DateDiff(Day, 0, OutTime), OutTime) END - CASE WHEN DateAdd(Day, - DateDiff(Day, 0, InTime), InTime) < Normal_Intime THEN Cast(Normal_Intime AS datetime) ELSE DateAdd(Day, - DateDiff(Day, 0, InTime), InTime) END - cast(totalLunchtime AS datetime), 8) ELSE '00:00:00' END AS WorkedTime 
from table 

從上面的查詢,做outtime - 銀泰 - totallunchtime

列數據類型是VARCHAR

Id |Intime |Outtime |totallunchtime 

001 |09:00:00 |21:00:00 |01:00:00 
002 |07:00:00 |07:30:00 |01:00:00 
003 |00:00:00 |00:00:00 |01:00:00 

WorkedTime意味着(outti我 - 銀泰 - totalLunchtime)

獲得輸出這樣

id |workedtime 

001 |11:00:00 
002 |23:30:00 
003 |23:00:00 

只有totallunchtime的問題,同時減去00:00:00它給人23:00:00,也爲PERSONID 002它給人23:30 :00應該只給出00:30:00

預計輸出

id |workedtime 

001 |11:00:00 
002 |00:23:00 
003 |00:00:00 

...等,

需要查詢幫助

+0

重複的http://stackoverflow.com/questions/1509508/how-to-make-total – RedFilter 2009-10-02 15:30:28

+0

Orbman。這是爲了減少時間值問題。那個不同,再次讀到這個問題 – Gopal 2009-10-02 15:34:56

+0

@Gopal,你最近幾天詢問的所有其他時間問題呢?有很多問題需要你澄清你所問的問題,你是否澄清過這些問題,甚至接受任何答案? – 2009-10-02 15:55:31

回答

1

會這樣的工作嗎?

declare @a datetime 
declare @b datetime 
declare @c datetime 

set @a = '09:00:00' 
set @b = '17:00:00' 
set @c = '01:00:00' 

select @b - @a - case when datediff(n, @a, @b) < 60 then '00:00:00' else @c end 

如果你需要比這更多,那麼你需要在什麼條件下totallunchtime欄應考慮澄清。

+0

@Chris J says _If you need more than this,then you need to澄清..._,ha!看到我對這個問題的評論... – 2009-10-02 17:03:22

+0

@Chris。非常感謝你 – Gopal 2009-10-02 17:56:52