我目前正在使用一个数据集,必须为该数据集计算员工的年龄,但是出生日期的格式如下:
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]
我认为此错误是由于开头的日期格式很奇怪而引起的。但是我不是很确定。
有人可以帮我解决这个问题吗?
答案 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