2016-04-15 130 views
0

我遇到下面的公式的問題。目標是根據(CEIDAvgUsage-Usage/Burnrate)預測未來日期。我一直在尋找答案,可以找到有用的東西。無論使用的表達是錯誤的還是別的。有沒有人有建議。算術溢出錯誤轉換爲數據類型datetime

RIGHT (CONVERT (varchar, CASE WHEN (GetDate() + (CEIDAvgUsage - Usage)/BurnRate) < GetDate() THEN GetDate() 
ELSE (Getdate() + (CEIDAvgUsage - Usage)/BurnRate) 
END, 103), 7) 

回答

0

究竟是什麼做錯了?你究竟想要做什麼?下面是可能工作的一些例子:

DECLARE @CEIDAvgUsage INT = 40 
    , @Usage INT = 20 
    , @BurnRate INT = 2 

SELECT CAST(DATEADD (dd,CASE WHEN (@CEIDAvgUsage - @Usage)/@BurnRate <= 0 
THEN 0 ELSE (@CEIDAvgUsage - @Usage)/@BurnRate END,GETDATE()) AS DATE) 
0

我的猜測是,它試圖這樣

(CEIDAvgUsage - Usage)/BurnRate) 

轉換爲日期

這只是沒有任何意義

(GetDate() + (CEIDAvgUsage - Usage)/BurnRate) < GetDate() 

您正在爲某個日期添加一個數字,並且兩邊都有GetDate()

(CEIDAvgUsage - Usage)/BurnRate < 0 

如果BurnRate爲正

CEIDAvgUsage < Usage 

RIGHT (CONVERT (varchar, CASE WHEN CEIDAvgUsage < Usage THEN GetDate() 
           ELSE DateAdd(dd, Getdate(), (CEIDAvgUsage - Usage)/BurnRate) 
          END 
       , 103) 
     , 7) 
相關問題