1

ドキュメントによると、Hives の標準関数 hour() は 0 から 24 の間の値を返すはずですが、何らかの理由で常に 0 から 12 の間の 12 時間時計の値を取得します。Hive テーブルのMySQLDateTimeフィールドとしてフィールドを使用しています。Timestamp誰が問題が何であるか知っていますか?

4

5 に答える 5

4

I think I found it. I looked at the source code and apparently UDFHour.java does have two evaluate() functions. One that does accept a Text object as parameter and one that uses a TimeStampWritable object as parameter. Both work with a Calendar instance but for some reason the first function returns the value of Calendar.HOUR_OF_DAY and the second one Calendar.HOUR.

I've looked in the Hives documentation but I couldn't find anything about that second function, but it's there. I'm using Hive 0.9.0.16, which came with Hortonworks' HDP.

Edit: I've reported this a while back. A patch is now available: https://issues.apache.org/jira/browse/HIVE-3850.

于 2013-01-02T12:04:55.097 に答える
2

hiveが行われたかに関係なく、返される日付を24時間形式としてフォーマットできます。

select FROM_UNIXTIME(mydate)  
from mytable
;

または、意味がある場合は、すべての日時スタンプを更新できます。

参照

于 2013-01-02T11:28:13.583 に答える
0

ハイブの下位バージョンの場合、回避策があります

    hour(from_unixtime(
unix_timestamp(
from_utc_timestamp(
from_unixtime(round(created_at/1000)),'Etc/GMT-8')
)))

私はEMRを使用しているため、最新バージョンのハイブを使用することを選択できません。そのため、この回避策を取得しました。

于 2013-02-16T15:04:29.480 に答える
0

上記ですでに述べたことの例を示すだけです

HOUR(cast (from_utc_timestamp(my_date_timestamp ,'GMT') as string)) -- 24 時間形式を返します

HOUR( from_utc_timestamp(my_date_timestamp ,'GMT') ) -- 12 時間形式を返します

于 2014-12-05T18:31:37.400 に答える