Previesť String stĺpec, ktorý má AM/PM pre Timestamp v Impala

0

Otázka

Mám stĺpec, ktorý má hodnoty v reťazec typu, ako je to uvedené nižšie:

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

Chcem previesť vyššie hodnoty stĺpca na čas v IMPALA. Snažil s obsadenie, to_timestamp a iné spôsoby , ale je to buď ukazuje chyba syntaxe alebo Null, ako výsledok. Môžete mi prosím navrhnite riešenie

2. Požiadavka

Tam je stĺpec, ako je nižšie v reťazec, chcem to, aby sa skonvertuje na čas sám.

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

prosím, naznačujú tak, že som nový Impala

Vďaka vopred

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

Najlepšiu odpoveď

0

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

Ďakujem za vyššie uvedených odpoveď , ale ja som pri pohľade na presný čas som poskytované v požiadavka ako 12:00 alebo 12:00 PM, @Koushik Roy
Shanti

aktualizované moja odpoveď.
Koushik Roy

V iných jazykoch

Táto stránka je v iných jazykoch

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