Sql 最新时间戳的相对时间(子查询)
我在雅典娜的桌子今天晚了一个星期,但它一直在赶上来 因此,我想创建一个查询,在最新时间戳前一周为我提供所有会话 我有类似的东西,但不起作用Sql 最新时间戳的相对时间(子查询),sql,amazon-athena,Sql,Amazon Athena,我在雅典娜的桌子今天晚了一个星期,但它一直在赶上来 因此,我想创建一个查询,在最新时间戳前一周为我提供所有会话 我有类似的东西,但不起作用 SELECT app_id, env, count(distinct session_id) as num_of_sessions, from_unixtime(timestamp/1000) as ts FROM "sessions" where env='demo' and date(from_unixtime(timestamp/
SELECT app_id, env, count(distinct session_id) as num_of_sessions, from_unixtime(timestamp/1000) as ts
FROM "sessions"
where env='demo' and date(from_unixtime(timestamp/1000))>date_add('week', -1, (SELECT max(timestamp) FROM "sessions" where env='demo' limit 1))
group by app_id, env, from_unixtime(timestamp/1000)
order by from_unixtime(timestamp/1000)
我得到的错误是
Error running query: SYNTAX_ERROR: line 3:58: Unexpected parameters (varchar(4), integer, bigint) for function date_add. Expected: date_add(varchar(x), bigint, date) , date_add(varchar(x), bigint, time) , date_add(varchar(x), bigint, time with time zone) , date_add(varchar(x), bigint, timestamp) , date_add(varchar(x), bigint, timestamp with time zone)
我从未在查询中执行过查询,所以这可能是问题所在,但我无法理解为什么错误非常明显 就我所见,表sessions中的列
timestamp
是typebigint
。事实上,它代表一个unix时间戳,这就是为什么您要从unixtime(timestamp/1000)执行
但是在给出错误的date\u add
函数中,您只需执行仍然是bigint类型的max(timestamp)
date\u add
func需要第三个参数作为time
或datetype
,因此您必须像以前一样强制转换它,因此:
date_add('week', -1, (
SELECT from_unixtime(max(timestamp) / 1000)
FROM "sessions"
WHERE env='demo' limit 1)
)