2013-02-14 38 views
0

我想比較L.LoanDueDate(這是一個smalldatetime)至ufnARCUGetLatestProcessDate()返回值(這是一個int),看看貸款到期日期是過去的最後一道工序日期還有多少天。演員INT爲smalldatetime

我接收

算術溢出錯誤將表達式轉換爲數據類型SMALLDATETIME

誤差和似乎無法弄明白。任何幫助都會有用。先謝謝你。

CAST(L.LoanDueDate - CAST(CAST((SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AS VARCHAR(10)) AS smalldatetime) AS INT) 
+0

我也曾嘗試使用以下。 CAST(L.LoanDueDate-CONVERT(smalldatetime,convert(char(8),(SELECT ProcessDate FROM ufnARCUGetLatestProcessDate())))AS INT) – JoBaxter 2013-02-14 23:50:40

回答

0

我能找出問題。 DigCamare對DATEDIFF的評論提醒我,即使您可以將int轉換爲smalldatetime,以便您可以進行比較,也是我需要做的。

DATEDIFF(d,L.LoanDueDate,CONVERT(smalldatetime,convert(varchar(10),(SELECT ProcessDate FROM ufnARCUGetLatestProcessDate())))) 
0

您無法將int與smalldatetime進行比較。您需要比較兩個日期,因此您必須使用datediff

0

,就可以把日期欄爲int。它會給你一個不含時間部分的aproximate(四捨五入)日期作爲int。

編輯:

這會給你日期爲數字給你作比較:

SELECT FLOOR(CAST(L.LoanDueDate as float)) - 
(SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AS myValue 
FROM ... 

關鍵是要日數轉換爲數量,而不是最新的。

+0

這就是爲什麼我試圖將其轉換爲char,然後獲取小日期值從那。我需要的只是日期,沒有時間。 – JoBaxter 2013-02-14 23:55:31

+0

看看我的編輯。 – rcdmk 2013-02-15 00:13:38

0

只是想添加以下內容。這是我用來做一個簡單的int到smalldatetime轉換。希望它可以幫助其他人。

(SELECT CAST(CAST(ProcessDate AS VARCHAR(10)) AS SMALLDATETIME) FROM ufnARCUGetLatestProcessDate())