在当前年份和生日之间获得年龄,给出**“从字符串转换日期和/或时间时转换失败。”**

时间:2016-04-22 07:06:27

标签: sql sql-server datediff

我需要从表PERSON和列BIRTHDATE(varchar(8))中获取select DATEDIFF (year , person.BirthDate, GETDATE()) as Age, * from person 的名称。

在我开始显示年龄> = 70之前尝试此查询。

SessionID   SessionName

100         August
101         September
102         October
103         November
104         December
105         January
106         May
107         June
108         July

此查询提供

  

“从字符串转换日期和/或时间时转换失败。”

我该怎么做?我真的不能想到。感谢

2 个答案:

答案 0 :(得分:4)

您可以使用下面的查询

SELECT DATEDIFF( year , Convert( datetime,person.birthdate, 120 ), GETDATE() ) as Age FROM persons

这将首先将您的person.birthdate列转换为日期,然后找出差异

答案 1 :(得分:1)

似乎出生日期列是varchar数据类型。尝试将其转换为datetime

SELECT 
    DATEDIFF (year , cast(person.BirthDate as datetime), 
    GETDATE()) as Age, * 
FROM 
    person