web-dev-qa-db-ja.com

ハイブの日付形式を変更するには?

Hiveの私のテーブルには、「2016/06/01」の形式で日付が記録されています。しかし、「2016-06-01」の形式と調和していないことがわかりました。たとえば、それらは比較できません。両方ともstringです。だから、私はそれらを調和の取れたものにする方法を知りたいし、それらを比較することができます。または、「2016/06/01」を「2016-06-01」に変更して比較できるようにする方法。

どうもありがとう。

9
yanachen

日付文字列をある形式から別の形式に変換するには、Hiveの2つの日付関数を使用する必要があります

  1. unix_timestamp(string date, string pattern)指定されたパターンの時間文字列をUNIXタイムスタンプ(秒単位)に変換し、失敗した場合は0を返します。
  2. from_unixtime(bigint unixtime[, string format])は、UNIXエポック(1970-01-01 00:00:00 UTC)からの秒数を、現在のシステムタイムゾーンにおけるその瞬間のタイムスタンプを表す文字列に変換します。

上記の2つの機能を使用すると、目的の結果を得ることができます。

サンプルの入力と出力は、下の画像から見ることができます。 enter image description here

最終的なクエリは

select from_unixtime(unix_timestamp('2016/06/01','yyyy/MM/dd'),'yyyy-MM-dd') from table1; 

table1は、Hiveデータベースにあるテーブル名です。

これがお役に立てば幸いです!!!

20
Farooque

つかいます :

unix_timestamp(DATE_COLUMN, string pattern)

上記のコマンドは、日付をUNIXタイムスタンプ形式に変換するのに役立ちます。この形式は、 Simple Date Function を使用して、必要に応じて書式設定できます。

日付関数

2
Ani Menon
cast(to_date(from_unixtime(unix_timestamp(yourdate , 'MM-dd-yyyy'))) as date)
0
Ashah

テーブルに「birth_day」という列があり、それがフォーマットになっているとしましょう。次のクエリを使用して、birth_dayを必要なフォーマットに変換する必要があります。

date_Format(birth_day, 'yyyy-MM-dd')

次の方法でクエリで使用できます

select * from yourtable
where 
date_Format(birth_day, 'yyyy-MM-dd') = '2019-04-16';
0
Terminator17