これはケースです。私は最後の日からデータを取得するために選択構文を作成しようとしています(今日は21.10です。その結果、20.10の日付クエリを持つデータがTalendのETLプロセスの一部になるのでを実行できません) 問題は、データ・ソース内のすべての列がVARCHARまたはSTRING型であることです。ソースはHive Hadoopにあります。現在の日付から1日を引いた後、ハイブで文字列に変換する方法
マイコード:
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()))as date) - interval '1' day
です。
私はいくつかのテストを行いました。 00::私はこのクエリを実行している場合は
select CAST(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP()))as date) - interval '1' day
結果は2016-10-20 00:00:00.0
と一部00である00.0は、おそらくメインクエリの代わりに、= CAST(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP()))as date) - interval '1' day
に私が期待されているなどの条件= '2016-10-20'
結果を入れているときbecasue、私のクエリ遺跡。
この問題の解決方法を教えてください。代わりに、私はSQLワークベンチ
あなたの問題を正しく理解しているかどうかはわかりません。 unixタイムスタンプからの1秒間の秒数(43200)where where節でtry-CAST(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP() - 43200))を日付として使用します。 –
@Rahul Sharmaソリューションが動作します - 。 – Voystin