Conversia String coloană care are AM/PM la Timestamp în Impala

0

Problema

Am o coloana care are valori de tip șir de mai jos:

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

Vreau să converti mai sus valorile de coloană pentru timestamp în IMPALA. A încercat cu distributie, to_timestamp și alte modalități , dar este arată eroare de sintaxă sau Nul ca urmare. Puteți să vă rugăm să sugerez o soluție

2 Cerință

Există o coloană de jos în șir, vreau să fie convertit la timestamp singur.

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

vă rugăm să sugereze un fel, eu sunt nou la Impala

Multumesc anticipat

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

Cel mai bun răspuns

0

Puteți folosi codul de mai jos. Din păcate, impala nu am pm de conversie capacitate, dar puteți folosi un pic de cod pentru a identifica PM și se adaugă 12 ore pentru a converti în mod corespunzător.

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

A doua cerință -
Impala întotdeauna se așteaptă 24 de ore ore format atunci când se convertește datetime. Deci, în cazul în care pentru 12 scenariu, trebuie să facem ceva special logica de genul de mai jos.
În primul rând verificați dacă ora 12, apoi minus 12 ore, altfel verifica daca PM, apoi se adaugă 12 ore(care acoperă 12 scenariu) și, în sfârșit, dacă își orice alte SUNT, pur și simplu convertește la 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

Vă mulțumesc pentru răspunsul de mai sus , dar eu sunt în căutarea pentru exact data cand am prevăzută în cerința ca 12:00 sau 12:00 PM, @Koushik Roy
Shanti

actualizat răspunsul meu.
Koushik Roy

În alte limbi

Această pagină este în alte limbi

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