1
下面的代碼已經從另一篇文章創建,但我現在有一個單獨的問題。這段代碼所做的基本上是使用2個日期,並從中減去週末以獲取從開始到結束時間(不包括週末)以分鐘爲單位的總時間。我現在試圖說,因爲對我來說,在一個工作日裏有11個小時,我只想每天計算11個小時。是我得到的結果如下(我加列名只是讓你知道它們是什麼):SQL日期到時間到分鐘減去工作日..... confused
@AllMins @MinDays
2173 1.50902777777778
由於在一個工作日內660分鐘或780分鐘在一天的工作,我需要不工作從總時間中減去此值。所以,1天將是2173-780,但我也需要在一天中獲得.50902777777778分鐘。有什麼建議麼?
DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME
SET @StartDate = '2010-08-02 00:00:00.000'
SET @EndDate = '2010-08-03 12:13:12.123'
--How many minutes are between order start and end time including non working time
DECLARE @AllMins INT
--Declares how many minutes are in a day and makes it float to get remainder minutes when divided
DECLARE @MinsInDay FLOAT
SET @MinsInDay = 1440
--Finds how many minutes are between start and end time excluding weekends and assignes to variable
SET @AllMins = ((DATEDIFF(mi, @StartDate, @EndDate))
-(((DATEDIFF(wk, @StartDate, @EndDate) * 2) * 24) * 60)
-(((CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END) * 24) * 60)
-(((CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END) * 24) * 60))
--Calculates how many days have elapsed in the minutes that the order has taken
DECLARE @MinDays FLOAT
SET @MinDays = (@AllMins/@MinsInDay)
SELECT
@AllMins
,@MinDays
嗯問題是我只想從上午6點到下午5點只計算時間,並且沒有線索可以從這裏開始...... – user380432 2010-08-05 20:06:04
好吧,所以每天的小數部分在午夜開始,所以你我們希望排除午夜至6點之間的6小時(360分鐘)。我修改了我的答案以反映這一點。把這與你的另一個關於拆分數字的小數部分的問題結合起來,你應該在路上。 – 2010-08-05 20:26:45