2016-05-25 5 views
1

私は昨日の日付00:00:00から23:59:59の終わりまでの間にレコードを取り出す必要があります。の日付とハイブの23:59:59と

select from_unixtime(unix_timestamp()-1*60*60*24, 'dd-MMM-yy'); 

しかし、私はハイブで午前23時59分59秒に取得する方法を確認していないが、次のように私は昨日の日付を得ました。

this SO(1歳)に答えて、ハイブUDFを使用して達成できます。

ビルドイン機能を使用するなどの簡単な方法があるのだろうかと思います。

答えて

1

我々は唯一unixtime

select 
from_unixtime(datediff(current_date, '1970-01-01')*3600*24-3600, 'dd-MM-yyyy HH:mm:ss') 
as start_time, 
from_unixtime(datediff(current_date, '1970-01-00')*3600*24-3600-1, 'dd-MM-yyyy HH:mm:ss') 
as end_time 

で遊ん必要があり、我々が得る: enter image description here

+0

は、私は、クエリの上に25〜として24-05-2016夜7時00分00秒とEND_TIMEとしてのstart_timeを与えることに気づきました05-2016 18:59:59正しいstart_time(24-05-2016 00:00:00)とend_time(25-05-2016 23:59:59)を取得するために、次のように少し微調整しました。 'dd-MM-yyyy HH:mm:ss') からfrom_unixtime(datediff(current_date、 '1970-01-01')* 60 * 60 * 24-72000、 * 60 * 60 * 24 + 14399、 'dd-MM-yyyy HH:mm:ss') としてend_time; – Arun

+0

@Arunそれはタイムゾーンに依存するようです!ありがとう、私は何か新しいことを学んだ。 – 54l3d

+0

クエリをタイムゾーンで更新してテストできますか?私は正解とマークすることができます。ご協力いただきありがとうございます。 – Arun

関連する問題