Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 无法使用强制转换函数_Sql Server_Datetime_Casting - Fatal编程技术网

Sql server 无法使用强制转换函数

Sql server 无法使用强制转换函数,sql-server,datetime,casting,Sql Server,Datetime,Casting,使用日期表达式时,我无法在MS SQL Server中执行强制转换函数 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 需要

使用日期表达式时,我无法在MS SQL Server中执行强制转换函数

 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


需要帮助/给予帮助

使用字符串进行减法将给您带来错误

Select '2015-05-20' - '2015-05-19'
错误:数据类型varchar和varchar在减法运算符中不兼容

 DATEADD ( DAY, '2012-10-01' - DateHired)/ 365 AS YearsWithSchool
减去两个日期将产生另一个日期

尝试使用datediff获得您想要的,这是一个数字:

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

如错误消息所示,DATEADD函数包含三个参数,如下所示:

DATEADD (datepart , number , date )

除非您要为日期添加特定的数字,否则我将使用DATEDIFF。

如果您使用的是SQL Server 2012,您可以使用
DATEFROMPARTS
函数来形成日期,
DATEDIFF
来查找两个日期之间的差异,最后
将结果转换为整数(您真的必须吗?)

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

太棒了!!你的回答成功了。我真的很感谢你的帮助。