У меня есть таблица в AWS Athena с столбцом с именем «servertime» с типом данных временной метки. Я запускаю такой запрос
select *
from table_name
where servertime between '2018-04-01 00:00:00' and '2018-04-05 23:59:59';
Это дает мне эту ошибку: Ваш запрос содержит следующие ошибки: SYNTAX_ERROR: строка 1:41: '=' нельзя применить к метке времени, varchar (19)
Как я могу решить эту проблему в Афине? И это важный запрос, чтобы получить данные из этой таблицы.
Проблема, которую вы видите, связана с вашим промежуточным состоянием. Если вы представите метку времени как varchar, Athena не преобразует ее в метки времени.
Для этого вам нужно передать явное приведение типов.
select * from table_name
where servertime
between TIMESTAMP '2018-04-01 00:00:00'
and TIMESTAMP '2018-04-05 23:59:59';
Может быть, это кому-то поможет. В моем случае мне пришлось преобразовать метку времени в правильный формат (например, from_iso8601_timestamp(ts)
), чтобы условие работало.
Также обратите внимание, что в Presto (и так в Athena) временная метка имеет точность до миллисекунд, поэтому вы можете использовать
TIMESTAMP '2018-04-05 23:59:59.999'
в качестве верхней границы (или вместо этого просто обычный>= some_day AND < next_day
).