首页 > 解决方案 > SQL server:当您只能访问月份和年份时计算年龄

问题描述

我有一个大数据文件,有 58,000,000 条记录,其中包含一个名为 Birth_Month 的字段,其中包含人们的出生月份和年份。它以字符串形式存储为 yyyy-mm。我需要计算截至 2018-APR-01 的年龄(以任何日期格式)。

我知道的唯一方法是将 Birth_Month 与 01 连接,使其变为 yyyy-mm-dd,然后将其转换为日期字段。然后按照通常的计算年龄的方法。

但是,由于文件很大,而且我使用的网络非常繁忙,我想知道是否有更有效的方法来做到这一点?

编辑我在测试数据集上尝试了我上面提到的方法 - 它没有用!:

update #TEST2
set [dob] = #TEST2.Birth_Month + '-01
Select Birth_Month,

DATEDIFF(yyyy,01-04-2018,dob)
    from
    #TEST2

标签: sqlsql-server-2008

解决方案


尝试

select cast(replace('2019-01'+'01', '-', '.') as numeric(8,4)) - cast(replace('2017-11'+'01', '-', '.') as numeric(8,4))

推荐阅读