如何将出生日期格式化为“ yyy-mm-dd”并从那里计算年龄

时间:2018-07-19 12:02:36

标签: sql date google-bigquery

我目前正在使用一个数据集,必须为该数据集计算员工的年龄,但是出生日期的格式如下:
1987-05-17T00:00:00 如何从出生日期中删除“ T00:00:00”?

从那时起,我想计算年龄,我已经尝试以此方式做过:

FLOOR(DATE_DIFF(CAST(CURRENT_DATE() AS DATE)), CAST(Birthdate AS DATE))) AS Age

但是,当我不断出现以下错误时:

错误:对于参数类型DATE,函数DATE_DIFF没有匹配的签名。支持的签名:DATE_DIFF(DATE,DATE,DATE_TIME_PART)在[27:9]

我认为此错误是由于开头的日期格式很奇怪而引起的。但是我不是很确定。

有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

以下是用于BigQuery标准SQL

FLOOR(DATE_DIFF(CURRENT_DATE(), PARSE_DATE('%Y-%m-%dT00:00:00', Birthdate), YEAR)) AS Age

答案 1 :(得分:0)

这是我用来计算年龄,月份和天数的查询:

SELECT 
username
,dob
,DATE_FORMAT(CURDATE(), '%Y') - DATE_FORMAT(dob, '%Y') - (DATE_FORMAT(CURDATE(), '00-%m-%d') < DATE_FORMAT(dob, '00-%m-%d')) AS years
,PERIOD_DIFF( DATE_FORMAT(CURDATE(), '%Y%m') , DATE_FORMAT(dob, '%Y%m') ) AS months
,DATEDIFF(CURDATE(),dob) AS days
FROM users

答案 2 :(得分:0)

以下是我在 bigquery 中获得年龄的方法

FLOOR(DATE_DIFF(CURRENT_DATE(), CAST(Birthdate AS DATE), day/365) AS Age