È possibile utilizzare sotto il codice. Purtroppo, impala non sono am pm capacità di conversione, ma si può usare un po ' di codice per identificare i PM e aggiungere 12 ore a quello di convertire correttamente.
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
Secondo requisito -
Impala si aspetta sempre 24 ore del formato dell'ora in caso di conversione di tipo datetime. Quindi, nel tuo caso per 12 AM scenario, dobbiamo fare un po ' speciale, la logica, come di seguito.
In primo luogo verificare se il suo 12 AM, quindi meno di 12 ore, altrimenti verificare se il suo PM, quindi aggiungere 12 ore(che copre 12 scenario) e, infine, se gli altri SONO, è semplicemente converte timestamp.
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