我试图计算合同的年龄,但我得到的错误从数据类型日期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