Você pode usar o código abaixo. Infelizmente, a impala não tem am pm capacidade de conversão, mas você pode usar um pouco de código para identificar PM e adicione 12 horas para que converter-se corretamente.
select
if (right('31-Oct-2016 02:09 PM',2)='PM',
to_timestamp('31-Oct-2016 02:09 PM','d-MMM-yyyy H:m') + interval 12 hours,
to_timestamp('31-Oct-2016 02:09 PM','d-MMM-yyyy H:m')
) ampm_timestamp
Segundo requisito -
A Impala sempre à espera de 24 horas formato de hora quando ele converte datetime. Então, no seu caso por 12 AM cenário, temos que fazer alguns especiais de lógica, como abaixo.
Primeiro, verifique se o seu 12 AM, em seguida, menos de 12 horas, então, verificar se o seu PM e, em seguida, adicione 12 horas(que cobre 12H cenário) e, finalmente, se a sua quaisquer outros SOU, ele simplesmente converte para carimbo de data / hora.
select
CASE WHEN right('31-Oct-2016 12:09 AM',2)='AM' AND RIGHT( SPLIT_PART('31-Oct-2016 12:09 AM',':',1),2)='12'
THEN to_timestamp('31-Oct-2016 12:09 AM','d-MMM-yyyy HH:mm') - interval 12 HOURS
ELSE CASE WHEN right('31-Oct-2016 12:09 AM',2)='PM'
THEN to_timestamp('31-Oct-2016 12:09 AM','d-MMM-yyyy HH:mm') + interval 12 HOURS
ELSE to_timestamp('31-Oct-2016 12:09 AM','d-MMM-yyyy HH:mm')
END END AMPM_TIMESTAMP