Conversione di una Stringa colonna (AM/PM Timestamp in Impala

0

Domanda

Ho una colonna che ha valori di tipo stringa, come di seguito:

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

Voglio convertire il al di sopra dei valori di una colonna di tipo timestamp in IMPALA. Provato con il cast, to_timestamp e in altri modi , ma è mostrando errore di sintassi o Null come risultato. Si può si prega di suggerire una soluzione

2 ° Requisito

C'è una colonna, come nell'esempio sotto in stringa, voglio essere convertito in timestamp da solo.

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

si prega di suggerire un modo, io sono nuovo di Impala

Grazie in anticipo

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

Migliore risposta

0

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

Grazie per la precedente risposta , ma sto cercando il tempo esatto che ho fornito nel come requisito 12:00 o 12:00 PM, @Koushik Roy
Shanti

aggiornata la mia risposta.
Koushik Roy

In altre lingue

Questa pagina è in altre lingue

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