Converter coluna de Seqüência de caracteres que tem AM/PM para Carimbo de data / hora no Impala

0

Pergunta

Eu tenho uma coluna que tenha valores do tipo string como abaixo:

31-Oct-2016 12:00 AM
31-May-2015 12:00 PM

Eu quero converter-se acima da coluna de valores de carimbo de data / hora no IMPALA. Tentei com o elenco, to_timestamp e de outras maneiras , mas ele está mostrando o erro de sintaxe ou Nulo como resultado. Por favor você pode sugerir uma solução

2º Requisito

Há uma coluna, como abaixo na cadeia, eu quero que ele seja convertido para a hora sozinho.

31-Oct-2016 12:00 
31-May-2015 12:00 

por favor, sugerir um caminho, eu sou novo Impala

Obrigado antecipadamente

casting hive impala timestamp
2021-11-22 05:58:32
1

Melhor resposta

0

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
2021-11-22 08:46:32

Obrigado pela resposta acima , mas eu estou olhando para a hora exata que eu forneci no requisito, como 12:00 ou 12:00 PM, @Koushik Roy
Shanti

actualizado a minha resposta.
Koushik Roy

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................