无法使用CAST功能

时间:2015-05-20 23:39:25

标签: sql-server datetime casting

使用DATE表达式时无法在MS SQL Server中执行CAST功能。

 CAST(CAST('2012-10-01' - DateHired AS INTEGER) / 365 AS INTEGER

错误消息;数据类型varchar和date在减法运算符中不兼容。

 DATEADD ( DAY, '2012-10-01' - DateHired)/ 365 AS YearsWithSchool

错误消息; dateadd函数需要3个参数。

是的,我尝试了每个逻辑日期&时间数据类型avbl ...

需要帮助/ appreaciated

2 个答案:

答案 0 :(得分:2)

如果您使用的是SQL Server 2012,则可以使用DATEFROMPARTS函数来形成日期,DateDiff以查找两个日期之间的差异,最后cast(您真的需要??)你的结果为整数

CAST(DATEDIFF(day, DATEFROMPARTS(2012,10,1 ), DateHired)/365 AS INTEGER)

答案 1 :(得分:0)

使用字符串减法会给您一个错误。

Select '2015-05-20' - '2015-05-19'

错误:数据类型varchar和varchar在减法运算符中不兼容。

减去两个日期将导致另一个日期。

尝试使用datediff来获得你想要的东西,这是一个数字:

datediff(day, '2012-10-01' , DateHired) / 365

DATEADD函数,如您的错误消息所示,有三个参数,如下所示:

DATEADD (datepart , number , date )

除非您在日期中添加特定号码,否则我会使用DATEDIFF。