2015-08-31 58 views
0

我在Hive中有一個表,它具有帶Date數據類型的字段。表是一個外部表,日期值在文本文件"04/14/2006 00:00:00"中如下所示,當我查詢表時,我爲此字段獲得NULL。有人可以幫助我得到日期,因爲它就像文本文件中那樣。當查詢表時,Hive日期顯示爲NULL

回答

0

時間戳

支持傳統的UNIX時間戳和可選納秒的精度。 整數數字類型:解釋爲UNIX時間戳,以秒爲單位 浮點數值類型:被解釋爲具有十進制精度的秒時間戳記 字符串:符合JDBC規範的java.sql.Timestamp格式「YYYY-MM-DD HH:MM:SS.fffffffff 「(9位小數精度)

時間戳被解釋爲無時間區域並存儲爲與UNIX紀元的偏移量。提供了用於轉換到時區和從時區轉換的便利UDF(to_utc_timestamp,from_utc_timestamp)。

所有現有的datetime UDF(月,日,年,小時等)都適用於TIMESTAMP數據類型。 文本文件中的時間戳必須使用格式yyyy-mm-dd hh:mm:ss [.f ...]。如果它們以另一種格式聲明它們爲適當的類型(INT,FLOAT,STRING等),並使用UDF將它們轉換爲時間戳。

日期

DATE值描述一個特定的年/月/日,其形式爲YYYY-MM-DD。對於 示例,DATE'2013-01-01'。日期類型沒有時間組件。 Date類型支持的值範圍是0000-01-01到9999-12-31,取決於原始Java Date類型支持的 。

Source

所以如果你需要打印的日期,因爲它是那麼會建議使用字符串數據類型,而不是datetime數據類型。

0

如果你有比YYYY-MM-DD HH其他格式的時間數據:MM:SS &如果設置時間戳在HIVE表數據類型,然後不亦樂乎查詢時將顯示NULL。

您可以在這裏使用一個簡單的技巧,在Microsoft Excel中打開您的.csv數據文件。選擇整個列右鍵單擊格式>單元格>自定義>在文本框中鍵入所需的格式(即YYYY-MM-DD HH:MM:SS)並按OK/Apply。您的數據將以Hive可接受的時間戳格式顯示,並將在HIVE中適當加載。你可以查詢HIVE.Cheers :)