2016-12-08 27 views
2

我目前正在使用Hive SQL,並且我在'timestamp'列中使用格式爲"25/Nov/2016:15:48:01 +0000"的表格。從時間戳格式「25/Nov/2016:15:48:01 +0000'檢索月份

我怎樣才能提取一個月是「月」從上面的格式,而無需使用SUBSTRING()函數。

我試過,

SELECT MONTH(timestamp) FROM table_name; 

但它返回空。什麼應該是正確的從上面的時間戳中檢索'Nov'月份的方法RMAT。

+0

該列是定義爲TIMESTAMP還是隻定義爲串?如果它是一個字符串,你應該使用SUBSTRING。 – dnoeth

+0

你可以檢查下面的方式! –

+0

你是否有2月和/或12月的例子,只是爲了檢查標籤是英文而不是法文(FEV)或德文(DEZ)或其他?如果你不能指定語言環境,那麼這將會帶來Java字符串格式的地獄... –

回答

2

請參閱下面的example ..

  • unix_timestamp(time,'dd/MMM/yyyy:HH:mm:ss'),然後嘗試你的月功能

    OR

  • 首先你的時間戳轉換成字符串下文中的申請一個月函數這樣 例子

from_unixtime(bigint unixtime[, string format])的 數目的從Unix紀元(1970-01-01 00:00:00 UTC)秒轉換爲代表的格式的那一刻的當前系統 時區的時間戳的 字符串「 1970-01-01 00:00:00"

那麼你可以申請每月函數將返回可以轉換的等效字符串後

INT month(string date)返回的月份部分月份INT格式日期或 噸imestamp字符串:month(「1970-11-01 00:00:00」)= 11, month(「1970-11-01」)= 11.

+0

你的反饋真的很有用Ram。我使用了MONTH(from_unixtime(unix_timestamp(timestamp,'dd/MMM/yyyy:HH:mm:ss'))),並且它很容易地以int格式返回了我的月份。 –

相關問題