【发布时间】:2019-02-24 15:57:35
【问题描述】:
我正在处理 Amazon RedShift 中的查询。
我在查询中创建了语法错误,但我无法知道其背后的问题。查询对我来说看起来不错。
下面是查询:
select (TIMESTAMP WITHOUT TIME ZONE 'epoch' + (_action_date::float / 1000000) * INTERVAL '1 second') as eta
where eta >= (SELECT NOW() - INTERVAL '1 DAY')
from trips;
这里,_action_date 是一个 bigint 整数,所以我也将它转换为时间戳格式。 我正在尝试提取 _action_date 大于或等于昨天日期的那些行。
我得到的错误:
运行查询时出错:“来自”第 1 行或附近的语法错误:...ta where eta >= (SELECT NOW() - INTERVAL '1 DAY') from trips...^
请帮我纠正它。任何帮助将不胜感激。
【问题讨论】:
-
from子句在select之后和where之前。我认为这是一个简单的错字。 -
我现在收到此错误:运行查询时出错:Redshift 表不支持指定的类型或函数(每条 INFO 消息一个)。
-
不相关,但是:不需要在
now()前面加上 select。您可以在表达式中使用标量函数,而无需 SELECT。 -
你应该使用
datediff函数,比如docs.aws.amazon.com/redshift/latest/dg/r_DATEDIFF_function.html
标签: sql amazon-redshift