我是SQL的新手,只是想知道我是否有一行包含几个客户的生日,所以我必须创建一个新列,同时创建一个视图,其中包含customer_id和客户年龄(截至今天)(每月)(Age_in_months =当前日期-客户的出生日期)。我该怎么做 ?
我尝试使用date diff,有人建议使用floor和cast,但是我总是出错
其中之一
第245级状态1状态1行
将varchar值'01 -05-1974'转换为数据类型int时转换失败。
有人可以提出一个非常简单的解决方案吗?
谢谢!
答案 0 :(得分:0)
由于您未提供表名或列名,因此我将假设表为客户,列为id和dob。
下面是一些获取信息的示例SQL
select
id as [Customer ID],
dob as [Date Of Birth],
datediff(month, cast(dob AS DATE), getdate()) as [Age In Months]
from
customers
首先,我们将获取出生日期,并确保它是一个日期,而不是Varchar或int,然后将其包装在DATEDIFF中,以获取dob列中的日期与月中的当前日期之间的差额
这是输出
Customer ID Date Of Birth Age In Months ----------- ----------------- ------------- 1 01-01-1991 331 2 01-01-2018 7
答案 1 :(得分:0)
谢谢,我看到您的查询工作正常,手动插入了数据。我导入了CSV文件,因此这在sql中创建了字符串类型条目。您的查询给了我同样的错误,我只需要用convert
来修复它。select customer_Id ,
DOB, DATEDIFF(month, CONVERT(date, Customer.DOB, 103), GETDATE()) as
[Age In Months] from Customer;