Hiveの私のテーブルには、「2016/06/01」の形式で日付が記録されています。しかし、「2016-06-01」の形式と調和していないことがわかりました。たとえば、それらは比較できません。両方ともstringです。だから、私はそれらを調和の取れたものにする方法を知りたいし、それらを比較することができます。または、「2016/06/01」を「2016-06-01」に変更して比較できるようにする方法。
どうもありがとう。
日付文字列をある形式から別の形式に変換するには、Hiveの2つの日付関数を使用する必要があります
unix_timestamp(string date, string pattern)
指定されたパターンの時間文字列をUNIXタイムスタンプ(秒単位)に変換し、失敗した場合は0を返します。from_unixtime(bigint unixtime[, string format])
は、UNIXエポック(1970-01-01 00:00:00 UTC)からの秒数を、現在のシステムタイムゾーンにおけるその瞬間のタイムスタンプを表す文字列に変換します。上記の2つの機能を使用すると、目的の結果を得ることができます。
最終的なクエリは
select from_unixtime(unix_timestamp('2016/06/01','yyyy/MM/dd'),'yyyy-MM-dd') from table1;
table1は、Hiveデータベースにあるテーブル名です。
これがお役に立てば幸いです!!!
つかいます :
unix_timestamp(DATE_COLUMN, string pattern)
上記のコマンドは、日付をUNIXタイムスタンプ形式に変換するのに役立ちます。この形式は、 Simple Date Function を使用して、必要に応じて書式設定できます。
cast(to_date(from_unixtime(unix_timestamp(yourdate , 'MM-dd-yyyy'))) as date)
テーブルに「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';