2017-12-15 1 views
1

1 월 31 일, 2 월 28 일 등과 같이 매월 마지막 날짜를 원합니다. 나는 CURRENT_DATE와 아래 시도하고 작동하지만 내 날짜 열을 사용하는 경우는 null를 돌려 :하이브는 매월 종료 날짜가

SELECT datediff(CONCAT(y, '-', (m + 1), '-', '01'), CONCAT(y, '-', m, '-', '01')) FROM 
(SELECT 
month(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd')) as m, 
year(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd')) as y, 
day(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd')) 
from table2) t 

반환 :

_c0 
    NULL 

SELECT 
month(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd')) as m, 
year(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd')) as y, 
day(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd')) 
from table2) t 

반환 : 사전에

m | y | _c2| 
3 |2017| 21| 

감사합니다.

+1

[하이브의 마지막 날 찾기] (https://stackoverflow.com/questions/17548584/find-last-day-of-a-month-in-hive) –

+0

last_day (current_date) 선택 가능) - 전체 날짜를 반환합니다 2017-12-31, 나는 31을 얻지 못하면 substr을 얻지 못할 것입니다. – DrSD

+0

하이브에 달력 유틸리티가 있으므로 하이브 UDF 함수로 시도하십시오 –

답변

0

사용 last_day()day() 기능 :

hive> select day(last_day(current_date)) ; 
OK 
31 
Time taken: 0.079 seconds, Fetched: 1 row(s) 

last_day()을 적용하기 전에 열을 변환 to_date()을 적용합니다.

관련 문제