Môžete použiť kód nižšie. Bohužiaľ, impala nemá am pm konverzie schopnosť, ale môžete použiť trochu kód na identifikáciu PM a pridať 12 hodín, ktoré previesť správne.
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
Druhá požiadavka -
Impala vždy očakáva 24hod. hodinovom formáte, kedy sa prevádza datetime. Takže, vo vašom prípade na 12 SOM scenár, máme na to nejaký špeciálny logikou, ako nižšie.
Najprv skontrolujte, či jeho 12 AM, potom mínus 12 hodín, inde skontrolovať, či jeho PM, potom pridať 12 hodín(ktorý zahŕňa 12PM scenár) a napokon, ak jej iné SOM, jednoducho sa skonvertuje na čas.
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