【问题标题】:SQL server: calculate age when you have only access to month and yearSQL server:当您只能访问月份和年份时计算年龄
【发布时间】:2019-12-04 15:02:42
【问题描述】:

我有一个大数据文件,有 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

【问题讨论】:

  • 你的方法没问题。
  • 大数据文件是指本地文件还是存储在 sql server 中的数据?
  • 它在服务器上,但是流量很大
  • “它不起作用”是什么意思?
  • 在示例数据中,这是我得到的:对于 DOB:01/02/2013 日期:01/04/2018 答案是 119 而不是 5

标签: sql sql-server-2008


【解决方案1】:

试试

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

【讨论】:

    猜你喜欢
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多