Presto - where 子句中的静态日期和时间戳
Presto - static date and timestamp in where clause
我很确定以下查询曾经在 Presto 上为我工作:
select segment, sum(count)
from modeling_trends
where segment='2557172' and date = '2016-06-23' and count_time between '2016-06-23 14:00:00.000' and '2016-06-23 14:59:59.000';
group by 1;
现在,当我 运行 它(在 EMR 上的 Presto 0.147 上)时,我收到一个尝试将 varchar 分配给 date/timestamp..
的错误
我可以使用:
select segment, sum(count)
from modeling_trends
where segment='2557172' and date = cast('2016-06-23' as date) and count_time between cast('2016-06-23 14:00:00.000' as TIMESTAMP) and cast('2016-06-23 14:59:59.000' as TIMESTAMP)
group by segment;
但感觉很脏...
有更好的方法吗?
快速想一想..您是否尝试过在约会中省略破折号?尝试 20160623
而不是 2016-06-23
.
我遇到了与 SQL 服务器类似的问题,但没有使用 Presto。
与其他一些数据库不同,Presto 不会自动在 varchar 和其他类型之间进行转换,即使是常量。转换有效,但更简单的方法是使用类型构造函数:
WHERE segment = '2557172'
AND date = date '2016-06-23'
AND count_time BETWEEN timestamp '2016-06-23 14:00:00.000' AND timestamp '2016-06-23 14:59:59.000'
您可以在此处查看各种类型的示例:https://prestosql.io/docs/current/language/types.html
我很确定以下查询曾经在 Presto 上为我工作:
select segment, sum(count)
from modeling_trends
where segment='2557172' and date = '2016-06-23' and count_time between '2016-06-23 14:00:00.000' and '2016-06-23 14:59:59.000';
group by 1;
现在,当我 运行 它(在 EMR 上的 Presto 0.147 上)时,我收到一个尝试将 varchar 分配给 date/timestamp..
的错误我可以使用:
select segment, sum(count)
from modeling_trends
where segment='2557172' and date = cast('2016-06-23' as date) and count_time between cast('2016-06-23 14:00:00.000' as TIMESTAMP) and cast('2016-06-23 14:59:59.000' as TIMESTAMP)
group by segment;
但感觉很脏... 有更好的方法吗?
快速想一想..您是否尝试过在约会中省略破折号?尝试 20160623
而不是 2016-06-23
.
我遇到了与 SQL 服务器类似的问题,但没有使用 Presto。
与其他一些数据库不同,Presto 不会自动在 varchar 和其他类型之间进行转换,即使是常量。转换有效,但更简单的方法是使用类型构造函数:
WHERE segment = '2557172'
AND date = date '2016-06-23'
AND count_time BETWEEN timestamp '2016-06-23 14:00:00.000' AND timestamp '2016-06-23 14:59:59.000'
您可以在此处查看各种类型的示例:https://prestosql.io/docs/current/language/types.html