查询表时,Hive日期显示为NULL

时间:2015-08-31 12:11:53

标签: date timestamp hive

我在Hive中有一个表,其中包含Date数据类型的字段。表是一个外部表,日期值在文本文件"04/14/2006 00:00:00"中如下所示,当我查询表时,我得到这个字段的NULL。有人可以帮助我在文本文件中获取日期。

2 个答案:

答案 0 :(得分:0)

<强>时间戳

支持具有可选纳秒精度的传统UNIX时间戳。 整数数字类型:解释为UNIX时间戳,以秒为单位 浮点数字类型:以小数精度解释为UNIX时间戳,以秒为单位 字符串:符合JDBC的java.sql.Timestamp格式“YYYY-MM-DD HH:MM:SS.fffffffff”(9位小数精度)

时间戳被解释为无时区并存储为UNIX纪元的偏移量。提供了用于与时区进行转换的便捷UDF(to_utc_timestamp,from_utc_timestamp)。

所有现有的日期时间UDF(月,日,年,小时等)都使用TIMESTAMP数据类型。 文本文件中的时间戳必须使用格式为yyyy-mm-dd hh:mm:ss [.f ...]。如果它们是另一种格式,则将它们声明为适当的类型(INT,FLOAT,STRING等),并使用UDF将它们转换为时间戳。

<强>日期

DATE值以YYYY-MM-DD格式描述特定的年/月/日。对于 例如,日期'2013-01-01'。日期类型没有时间组件。 Date类型支持的值范围是0000-01-01到9999-12-31,具体取决于 原始Java Date类型支持。

Source

因此,如果您需要按原样打印日期,那么将建议使用字符串数据类型而不是日期时间数据类型。

答案 1 :(得分:0)

如果您的时间数据格式不是 YYYY-MM-DD HH:MM:SS &amp;如果在HIVE表中将时间戳设置为数据类型,则hive在查询时将显示NULL。

您可以在此处使用简单的技巧,在Microsoft Excel中打开.csv数据文件。在文本框中选择所需格式的整个列右键单击&gt;格式化单元格&gt;自定义&gt;类型(即YYYY-MM-DD HH:MM:SS),然后按确定/应用。然后,您的数据将以Hive可接受的时间戳格式显示,并将在HIVE中正确加载。您可以通过查询HIVE.Cheers来检查它:)