我正在使用一个数据集,该数据集有一个标题为"Birth_DT"的列,我试图从该列计算成员18个月前的年龄.
下面是"SELECT DISTINCT(Birth_DT)FROM Table.DB Limit 9;"显示的列:
birth_dt
-----------------------
1990-08-15 00:00:00.000
1986-05-30 00:00:00.000
1981-03-03 00:00:00.000
1970-05-11 00:00:00.000
1963-01-20 00:00:00.000
1985-01-26 00:00:00.000
1983-01-03 00:00:00.000
2021-01-03 00:00:00.000
1995-11-14 00:00:00.000
在雅典娜,这一栏显示为"字符串".
到目前为止,我try 的是:
select DATE_DIFF('year', birth_dt, (current_timestamp - interval '18' month)) as age from table.DB limit 10;
它一直给我一个错误,说:
"语法_错误:第1:8行:函数DATE_DIFF的意外参数(varchar(4),varchar,TIMESTAMP WITH时区).预期:DATE_DIFF(varchar(X),time,time),DATE_DIFF(varchar(X),TIME WITH时区,TIME WITH时区),DATE_DIFF(VARCHAR(X),TIMESTAMP WITH时区),DATE_DIFF(varchar(X),DATE,DATE),DATE_DIFF(varchar(X),TIMESTAMP,TIMESTAMP)"
因此,我try 只专注于将"Birth_dt"列更改为有效日期,但以下内容无济于事:
select date_parse(birth_dt, '%YYYY-%MM-%dd') as age from table.DB limit 10;
select cast(from_iso8601_timestamp("birth_dt.1") AS date) as age from table.DB limit 10;
SELECT date_parse(birth_dt,'%Y-%m-%dT%H:%i:%s%+00:00') as date_column,
current_timestamp as Todays_Date,
date_diff('day',current_timestamp,date_parse(birth_dt,'%Y-%m-%dT%H:%i:%s%+00:00')) as difference
FROM table.DB limit 10;
这些查询最后给出的错误如下所示:
"INVALID_Function_ARGUMENT:无效格式:"1990-08-15 00:00:00.000"在"-08-15 00:00:00.000"处格式不正确"
或
"INVALID_FUNCTION_ARGUMENT: Invalid f或mat: "1990-08-15 00:00:00.000" is malf或med at "00:00:00.000""
What I want to eventually have f或 my examples above is:
Age
---
31
35
40
51
58
36
38
1
25
请救救我!谢谢!