Convertir la Cadena de la columna que tiene AM/PM para la hora en Impala

0

Pregunta

Tengo una columna que tiene los valores de tipo cadena como la siguiente:

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

Quiero convertir el por encima de los valores de columna de marca de tiempo en el IMPALA. Probado con el reparto, to_timestamp y de otras maneras , pero está mostrando error de sintaxis o Nulo resultado. Por favor, puedes sugerir una solución

2º Requisito

Hay una columna, como el de abajo en la cadena, que yo quiero ser convertido a la marca de tiempo a solas.

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

por favor, sugiera una manera, soy nuevo en el Impala

Gracias de antemano

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

Mejor respuesta

0

Usted puede utilizar a continuación el código. Por desgracia, impala no tiene am pm conversión de capacidad, pero se puede usar un poco de código para identificar PM y agregar de 12 horas para que convertir correctamente.

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 -
Impala siempre espera 24 horas de formato de hora cuando se convierte datetime. Así que, en su caso, por 12 AM escenario, tenemos que hacer algo de lógica, como el de abajo.
En primer lugar comprobar si sus 12 AM, luego de menos de 12 horas, cosa comprobar si su PM, a continuación, añadir 12 horas(que cubre las 12PM escenario) y, finalmente, si su cualquier otro SOY, simplemente se convierte en la marca de tiempo.

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

Gracias por la anterior respuesta , pero estoy buscando el momento exacto en que he proporcionado en el requisito como 12:00 AM o 12:00 PM, @Koushik Roy
Shanti

actualizado mi respuesta.
Koushik Roy

En otros idiomas

Esta página está en otros idiomas

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