私は初心者です。参加日を指定する列を持つ従業員テーブルがあり、過去3か月以内に参加した従業員のリストを取得したい。 from_unixtime(unix_timestamp())を使用して現在の日付を取得できることを理解しています。 datediffの計算方法は? MS SQLのようなDATEDIFF()関数が組み込まれていますか?ご意見をお聞かせください!
datediff(to_date(String timestamp), to_date(String timestamp))
秒単位の差が必要な場合(つまり、日付を丸1日ではなくタイムスタンプと比較する場合)、「YYYY-MM-DD HH:MM:SS」形式の2つの日付またはタイムスタンプ文字列を単純に変換できます(またはunix_timestamp()を使用して文字列の日付形式を明示的に指定してから、それらを互いに減算して、秒単位の差を取得します。 (そして、60.0で割って分を取得したり、3600.0で割って時間を取得したりできます。)
例:
UNIX_TIMESTAMP('2017-12-05 10:01:30') - UNIX_TIMESTAMP('2017-12-05 10:00:00') AS time_diff -- This will return 90 (seconds). Unix_timestamp converts string dates into BIGINTs.
ここでunix_timestamp()でできることの詳細については、異なる日付フォーマットで文字列を変換する方法を含めて: https://cwiki.Apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions
はいdatediffが実装されています。参照: https://cwiki.Apache.org/confluence/display/Hive/LanguageManual+UDF
ちなみに、Googleで「Hive datediff」を検索してこれを見つけたのは、最初の結果でした;)
最初にこれを試してみます
select * from employee where month(current_date)-3 = month(joining_date)