Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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 2005 我无法在SQLServer2005中使用year查找年龄?_Sql Server 2005_Datetime_Datediff_Nvarchar - Fatal编程技术网

Sql server 2005 我无法在SQLServer2005中使用year查找年龄?

Sql server 2005 我无法在SQLServer2005中使用year查找年龄?,sql-server-2005,datetime,datediff,nvarchar,Sql Server 2005,Datetime,Datediff,Nvarchar,我正在写一个查询,如下所示 SELECT DATEDIFF(year,Clmn_Dob,getdate()) AS DiffDate FROM tblABCD 其中Clmn_Dob是一个NVARCHAR列。我想根据出生日期来计算年龄。但我得到的不是这个,而是一个错误 将表达式转换为数据类型datetime时出现算术溢出错误 我的字符串格式为dd/MM/yyyy,getdate格式为MM/dd/yyyy 我没有得到任何解决方案您可以使用转换功能: SELECT DATEDIFF(year,CO

我正在写一个查询,如下所示

SELECT DATEDIFF(year,Clmn_Dob,getdate()) AS DiffDate 
FROM tblABCD
其中Clmn_Dob是一个NVARCHAR列。我想根据出生日期来计算年龄。但我得到的不是这个,而是一个错误

将表达式转换为数据类型datetime时出现算术溢出错误

我的字符串格式为dd/MM/yyyy,getdate格式为MM/dd/yyyy


我没有得到任何解决方案

您可以使用转换功能:

SELECT
DATEDIFF(year,CONVERT(datetime, Clmn_Dob, 103),getdate()),
FROM tblABCD
医生:

-不应该将日期存储为字符串-那样只会自找麻烦。使用DATETIME数据类型!这允许您在列上使用日期函数。实际上,我使用的是datetime数据类型。但在这种情况下,我想要这样。那么,也许你在那列中的数据已经损坏了?您确定那里只有dd/MM/yyyy字符串吗?确定。因此,可能存在一些不存在的日期,例如2013年1月33日或2013年6月17日?你有多少个条目?你能检查每个字符串是否有正确的日期吗?有5000个条目……,你能根据“/”将这个字符串列分成三列吗?我不确定这是否是你的想法,但你可以使用这个:从选择子字符串clmn_Dob中选择MAXx.DD,MAXx.MM,MAXx.YYYY,1,2作为DD,子字符串clmn_Dob,4,2作为MM,子字符串clmn_Dob,7,4从tblABCD x起为YYYY