비교

2016-12-21 3 views
0

에 대한 절은 내가 다음과 같습니다 데이터 집합이 곳에서 날짜 형식 문자열 변경 :비교

datetime         count   
18:28:20.602 UTC DEC 08 2016    1 
20:42:32.017 UTC DEC 08 2016    5 
15:33:40.691 UTC DEC 08 2016    1 
17:11:54.008 UTC DEC 08 2016    3 
20:28:57.861 UTC DEC 08 2016    0 
. 
. 
. 
. 

날짜 시간 열은 문자열 형식입니다. 타임 스탬프로 변환하는 데 어려움이 있습니다. 28 : 00.000 UTC 2016년 12월 8일 '에 '18 : 33 : 00.000 UTC 2016년 12월 8일'

답변

0

하이브로 나는 '18 사이의 데이터를 얻을 수 있도록

은 어떻게 임팔라/하이브 쿼리를 작성하려면 어떻게해야합니까 : (즉, 하이브 규칙 때문에 현지 시간대에)

cast(from_unixtime(unix_timestamp(SHITTY_FORMAT, 'HH:mm:ss.SSS zzz MMM dd yyyy'), 'yyyy-MM-dd HH:mm:ss.SSS') as Timestamp) 

는 ... 타임 스탬프로 한 후, 다음 문자열 표준 형식으로, 유닉스 타임 스탬프로 엿 같은 문자열 형식을 변환합니다.
더 쉬운 방법은 없습니다. 여름과 겨울에 1 시간 겹치기 때문에 약간의 엣지 케이스가있을 수 있습니다.

출처 : 물론 Hive documentation, ...


임팔라 으로합니다 (zzz 형식 수정을 지원하지 않습니다) :

cast(from_unixtime(unix_timestamp(regexp_replace(SHITTY_FORMAT, ' UTC ', ' '), 'HH:mm:ss.SSS MMM dd yyyy'), 'yyyy-MM-dd HH:mm:ss.SSS') as Timestamp) 

작업 ...로 엿 같은 문자열 형식을 변환합니다 UNIX 타임 스탬프 모든 입력이 UTC으로 가정하고 String 표준 형식 (임팔라 규칙이므로 UTC 시간대)으로 작성한 다음 타임 스탬프로 변환하십시오.