2017-05-15 38 views
-1

同時執行此代碼我得到這個錯誤:轉換失敗時,轉換日期和/或時間從字符串

declare @adtdays int 

SELECT @adtdays = case when 
DATEPART(MONTH,GETDATE()) > 
DATEPART(MONTH,CONVERT(DATETIME,Day1)) then 
DATEPART(day,(DATEADD(DAY,-1, 
CAST(CAST(DATEPART(MONTH, GETDATE()) AS VARCHAR) + ' 
/1/' + CAST(DATEPART(year, Day1) AS VARCHAR) as DATE) 
))) else 0 end 
FROM ProgProdAlpidi 
WHERE ProductCode = 'PRODUCT CODE' 

什麼即時試圖做的是,如果實際月比字段中的數據更大'Day1'然後。減去一天的實際月份,+ '/1/' +'Day1'

的一年希望的結果應該是'4/1/2017'將它轉換爲日期

然後我得到這個錯誤

Msg 241, Level 16, State 1, Line 6 
Conversion failed when converting date and/or time from character string. 

this is the data in my table,

Day1數據類型爲浮動

對不起,不解釋好..我還在學習,再加上英語不是我的母語...

謝謝您。

+2

你到底想幹什麼?代碼沒有意義。 –

+1

這和C#有什麼關係?據我所知,這是純SQL ... –

+1

它看起來像你試圖將「五月」轉換爲日期。這將無法工作。解釋你想要做什麼。 – alroc

回答

0

目前還不清楚究竟你想在你的問題,實現什麼,但我懷疑你想達到的這三兩件事之一:

--If you want the first of the month: 
SELECT CONVERT(DATE, DATEADD(d, -(DAY(DATEADD(m, -1, GETDATE() - 2))), DATEADD(m, -1, GETDATE() - 1))); 

--If you want the last of the month: 
SELECT CONVERT(DATE, DATEADD(d, -(DAY(GETDATE())), GETDATE())); 

--If you want the month in Month format: 
SELECT DATENAME(month, GETDATE()); 
+0

謝謝卡姆蘭我會記住這一點 –

相關問題