Ошибка запроса SQL AWS Athena с отметкой времени

У меня есть таблица в 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)

Как я могу решить эту проблему в Афине? И это важный запрос, чтобы получить данные из этой таблицы.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
16
0
26 448
1

Ответы 1

Проблема, которую вы видите, связана с вашим промежуточным состоянием. Если вы представите метку времени как varchar, Athena не преобразует ее в метки времени.

Для этого вам нужно передать явное приведение типов.

select * from table_name 
where servertime 
   between TIMESTAMP '2018-04-01 00:00:00' 
   and TIMESTAMP '2018-04-05 23:59:59';

Также обратите внимание, что в Presto (и так в Athena) временная метка имеет точность до миллисекунд, поэтому вы можете использовать TIMESTAMP '2018-04-05 23:59:59.999' в качестве верхней границы (или вместо этого просто обычный >= some_day AND < next_day).

Piotr Findeisen 10.08.2018 22:57

Может быть, это кому-то поможет. В моем случае мне пришлось преобразовать метку времени в правильный формат (например, from_iso8601_timestamp(ts)), чтобы условие работало.

Oleg Korol 02.07.2021 11:52

Другие вопросы по теме