我試圖計算合同的年齡,但我得到的錯誤從數據類型日期INT顯式轉換是不允許
從數據類型日期爲int顯式轉換是不允許
這是我的代碼:
SELECT
Contract_hist.*,
IB.*,
CAST((CASE
WHEN (CAST(CONVERT(INT, Setup.[Start]) - CONVERT(INT,[IB].[Install_Date])) AS INT))/365 <= 0
THEN 0
WHEN (CAST(CONVERT(INT, Setup.[Start]) - CONVERT(INT,[IB].[Install_Date])) AS INT))/365 > 0
THEN (CAST(CONVERT(INT, Setup.[Start]) CONVERT(INT,[IB].[Install_Date])) AS INT))/365
END) AS INT) AS AGE
FROM
Setup, Contract_hist
INNER JOIN
IB ON Contract_hist.[System No] = IB.System_ID
哪裏 「設置[開始]」 & 「[IB] [INSTALL_DATE]」 是DATETIME2值。
我很欣賞任何有幫助的想法。
謝謝。
這是否涉及? http://stackoverflow.com/questions/5505935/convert-from-datetime-to-int「鑄造到一個int不再適用於最新版本的sql server'。嘗試使用'DATEDIFF(dd,'12/30/1899 ',mydatefield)'。 – redFur
[不良習慣踢:使用舊式JOIN](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using- old-style-joins.aspx) - 在ANSI - ** 92 ** SQL標準(** 25年)中舊式*逗號分隔的表*樣式列表已替換爲* proper * ANSI'JOIN'語法**之前),它的使用是不鼓勵的。你應該**最肯定不是**混合這兩種風格! –
所以,你有什麼建議?我應該使用什麼樣的「加入」? – BTurkeli