2016-05-25 5 views
1

私は異なる形式の2つの日付を比較しようとしています。だから、私はそれらの両方をunixtimespampに変換していますが、日付形式は異なっているので比較しています。それは正しい方法を変換しない。私はこれに助けが必要です。ここに私のクエリです:ハイブの日付変換が機能しない

select a.date,b.date 
from table1 a join table2 b 
on (from_unixtime(unix_timestamp(b.date, 'MM/dd/yyyy HH:mm:ss a')))=(from_unixtime(unix_timestamp(nvl(a.date,'3050-01-01 00:00:00.0')))); 

日付形式は以下のとおりです。

a.date     b.date 
4/12/2016 5:46:50 PM 2016-04-12 17:46:50.0 
4/12/2016 5:46:50 PM 2016-04-12 17:46:50.0 

どうもありがとう、 stacky

+0

a.dateの日付形式:4/12/2016 5:46:50 PM b.dateの日付形式:2016-04-12 17:46:50.0 – stackster

答えて

0

をあなたが後方あなたの日付トリートメントを持っているように見えます。 a.dateは、フォーマットを指定する必要があるものです。 b.dateは、準備なしでタイムスタンプにうまく変換する必要があります。以下は、私のマシン上で十分にテスト:

select a.date,b.date 
from table1 a join table2 b 
on unix_timestamp(b.date) = unix_timestamp(a.date,'M/d/yyyy h:mm:ss a'); 
0

私はあなたがlong int型に日付を変換していることがわかります。より正確です。それで、単に彼らを比較して、彼らが平等であることを見てみましょう。

select a.date,b.date from table1 a join table2 b on (unix_timestamp(b.date, 'MM/dd/yyyy HH:mm:ss a'))=(unix_timestamp(coalesce(a.date,'3050-01-01 00:00:00.0'))); 
関連する問題