2017-08-23 8 views
0

私の入力タイムスタンプとして変換していないことハイブのタイムスタンプが期待

2017年6月8日午後07時02分03秒EDT

のようなもので、私は

にそれを変換するために探しています

2017-06-08 19:02:03

以下のクエリを実行しようとしていますが、 2017-01-01 18:02:03

私は何をしないのです:

select 
from_unixtime(unix_timestamp('06/08/2017 19:02:03 EDT', 'MM/dd/YYYY hh:mm:ss z')) 

出力期待通りに変換されていませんか?

答えて

0

これを試してください。

select from_unixtime(unix_timestamp('06/08/2017 19:02:03 EDT', 'MM/dd/yyyy hh:mm:ss')) ; 
  • 変更YYYYはYYYYする

編集:

クエリが動作するはずの下に、あなたのサーバはEDTのタイムゾーンにある場合は、それ以外の出力は、サーバーのローカルタイムゾーンになります。

select from_unixtime(unix_timestamp('06/08/2017 19:02:03 EDT', 'MM/dd/yyyy hh:mm:ss z'), 'yyyy-MM-dd hh:mm:ss') ; 
+0

"そのままPDTとして"という意味ですか?タイムゾーンはサーバー自体のJavaのロケールに依存します –

+0

PDTは太平洋標準時(夏時間) の略です。http://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html – sachin

+0

はい、わかります。私は、 'z 'を解析している時間フォーマットの一部であるので、' z'を保持しなければならないということを意味しました。 PDTの略であるので削除する理由はありません –

関連する問題