Converting DATE and TIME integers to timestamp
Use to_timestamp() with an appropriate format template.
For string input, with padding to the left like in your example:
to_timestamp(lpad(&quot;STARTDT&quot;, 8, '0')
          || lpad(&quot;STARTTM&quot;, 8, '0'), 'YYYYMMDDHH24MISSMS')

For integer input, this should be most efficient:
to_timestamp(lpad((&quot;STARTDT&quot; * bigint '100000000' + &quot;STARTTM&quot;)::text, 16, '0') , 'YYYYMMDDHH24MISSMS')

Produces timestamptz (based on your current timezone setting). A plain cast to timestamp gets the according local timestamp:
to_timestamp( ... )::timestamp