Bhubaneswar, Odisha, India
+91-8328865778
support@softchief.com

Presto DB : BIGINT or LONG to TIMESTAMP

Presto DB : BIGINT or LONG to TIMESTAMP

Timestamp stored in the hive column UPDT_DT in the table like,

$ presto-cli –catalog hive –schema default

presto:default> select updt_dt from HIVE_SRP_TEST_TBL limit 5;

    updt_dt    

—————

1497961733000

1497961733000

1497961733000

1497961733000

1497961733000

(5 rows)

ISSUE : When you simple convert to timestamp, the output would be like,

presto:default> select from_unixtime(updt_dt)updt_dt from HIVE_SRP_TEST_TBL limit 5;

          updt_dt           

—————————

+49438-07-09 00:00:00.000

+49438-07-09 00:00:00.000

+49438-07-09 00:00:00.000

+49438-07-09 00:00:00.000

+49438-07-09 00:00:00.000

(5 rows)

Solution :

presto:default> select from_unixtime(updt_dt / 1000) + parse_duration(cast((updt_dt % 1000) as varchar) || ‘ms’) updt_dt fromHIVE_SRP_TEST_TBL limit 5;

         updt_dt          

————————-

2017-06-20 12:28:51.000

2017-06-20 12:28:51.000

2017-06-20 12:28:51.000

2017-06-20 12:28:51.000

2017-06-20 12:28:51.000

(5 rows)