hql="
select DISTINCT b.mid, from_unixtime(b.create_time,'yyyy-MM-dd hh.mm.ss'), to_id from
(select mid, create_time, to_id, dt from mark_table where dt>=$dt1 and dt<=$dt2 and to_id = 'Category_001' ) b
"
위의 하이브 쿼리가 있고 'b.create_time'은 날짜가있는 열이지만이 열의 기본 시간 형식은 다음과 같습니다.
1594553700
초 단위 인 것 같아요? 이것을 사용하여 변환하고 싶습니다.
from_unixtime(b.create_time,'yyyy-MM-dd hh.mm.ss')
그러나 b.create_time이 해당 함수가 작동하는 문자열이 될 수 없다는 오류가 발생합니다.
어떻게 처리할까요?
1594553700
Unix 타임 스탬프 (1970 년 1 월 1 일 이후의 초 수)처럼 보입니다 : 2020 년 7 월 12 일 일요일 오전 11:35:00에 해당합니다.
from_unixtime()
형식화 된 날짜 문자열로 바꾸는 올바른 함수입니다. 그러나이 타임 스탬프를 문자열로 저장하는 것처럼 보이지만 (확실히 좋은 생각은 아닙니다) 함수는 숫자를 인수로 원합니다 .
올바른 데이터 유형으로 명시 적으로 캐스팅하십시오.
from_unixtime(cast(b.create_time as bigint),'yyyy-MM-dd hh.mm.ss')
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다