2016-06-26 2 views
10

я уверен, что следующий запрос работал для меня на Престо: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; 

теперь, когда я запускаю его (на Presto 0,147 на ОМ) Я получаю ошибка в попытке присвоения VARCHAR до даты/времени ..

я могу заставить его работать, используя:

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; 

но он чувствует себя грязным ... есть лучший способ сделать это?

ответ

16

В отличие от некоторых других баз данных, 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://prestodb.io/docs/current/language/types.html

-2

Просто быстрая мысль .. вы пробовали пропустить тире в свою дату? попробуйте 20160623 вместо 2016-06-23.

Я столкнулся с чем-то похожим с SQL-сервером, но не использовал Presto.

+0

Нету не работает .. теперь она интерпретирует дату как целое число ('=' не может применяться к дате, целому числу) –

Смежные вопросы