2016-06-26 20 views
10

aşağıdaki sorgu Presto benim için çalışmak için kullanılan eminim nereye statik tarih ve zaman damgası: Bunu çalıştırdığınızdaPresto - fıkra

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; 

şimdi (EMR hakkında Presto 0.147 üzerinde) Bir olsun tarih/zaman damgasına varchar atama çalışmakla hata ..

bunu kullanarak iş yapabilirsiniz:

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; 

ama bunu yapmak için daha iyi bir yol yoktur ... kirli hisseder?

cevap

16

Diğer bazı veritabanlarından farklı olarak, Presto otomatik olarak varchar ve diğer türler arasında değişmez, sabitler için bile. Dökme çalışır, ancak daha basit bir yolu tipi kurucular kullanmaktır:

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' 

Burada türleri için örnekler görebilirsiniz: https://prestodb.io/docs/current/language/types.html

-2

Hızlı bir düşünce .. Tarihinizde tire işaretlerini atlamayı denediniz mi? 2016-06-23 yerine 20160623'u deneyin.

SQL sunucusuyla benzer bir şeyle karşılaştım, ancak Presto kullanılmadı.

+0

hayır çalışmıyor .. şimdi tamsayı olarak tarih (yorumlamaktadır '=' tarihe uygulanamaz, tam sayı) –