Posts: 9
Registered: ‎04-20-2019
Accepted Solution

Impala date

When i am running below


select unix_timestamp('20190131 05:00:00',"yyyyMMdd HH:mm:ss");


output is 1548910800 


but when i am running same thing on a table on a column which is big int


select min(IPID.BK_EFF_STRT_DT) ,max(IPID.BK_EFF_STRT_DT) from  ipid;


o/p is below


| min(ipid.bk_eff_strt_dt) | max(ipid.bk_eff_strt_dt) |
| 1512709200000 | 1548910800000


why is extra 0 added in 2nd case




select cast(1548910800000 div 1000 as timestamp) + interval (1548910800000 % 1000) milliseconds;


returns :


2019-01-31 05:00:00


This is causing issue when i am trying something like below it returns 0 rows:


select count(*) from ipid
where unix_timestamp('20190124',"yyyyMMdd") between IPID.BK_EFF_STRT_DT AND IPID.BK_EFF_END_DT;

Expert Contributor
Posts: 142
Registered: ‎07-17-2017

Re: Impala date

the unix_timestamp function return a number of seconds but it seems that ipid.bk_eff_strt_dt column is inserted with the milliseconds number!?
About your query try this:

FROM ipid
WHERE unix_timestamp('20190124',"yyyyMMdd")*1000 BETWEEN ipid.BK_EFF_STRT_DT AND ipid.BK_EFF_END_DT;

Good luck.
Posts: 9
Registered: ‎04-20-2019

Re: Impala date

Will try that,do you have any suggestion on best way to implementing
dimension with scd2 type in hadoop, our dimension table has several sources
and all should be able to load /update concurrently in dimension table.
#- Please type your reply above this line -##