情况就是这样.我正在尝试使用select语法从最后一天获取数据(今天我们有21.10,因此我应该有20.10日期查询的数据将成为Talend中ETL过程的一部分所以我不能简单地做到date = “2016年10月20日”)
问题是数据源中的所有列都是VARCHAR或STRING类型 – 日期也是.来源是Hive Hadoop.
我的代码:
select
cast(to_date(from_unixtime(unix_timestamp(dzien ,'yyyyMMdd'), 'yyyy-MM-dd')) as date),
count(ns_utc) as ILOSC_ODSLON
from portal.portal_data
where
portal_data.opl_ev_ty is null
and portal_data.opl_ev_as is null
and cast(to_date(from_unixtime(unix_timestamp(dzien ,'yyyyMMdd'), 'yyyy-MM-dd')) as date) = CAST(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP()))as date) - interval '1' day
GROUP BY
cast(to_date(from_unixtime(unix_timestamp(dzien ,'yyyyMMdd'), 'yyyy-MM-dd')) as date)
使用该代码查询返回没有exept列名称.问题可能是这个部分= CAST(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP()))作为日期) – 间隔’1’天.
我做了一些测试.当我运行此查询时
select CAST(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP()))as date) - interval '1' day
结果是2016-10-20 00:00:00.0和00:00:00.0可能会破坏我的查询,因为在主查询中而不是= CAST(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP()))作为日期) – interval’1 ‘那天我把条件=’2016-10-20’结果如预期的那样.
你能指导我如何解决这个问题吗?
而不是Hue我正在使用SQL Workbench