Hive - 来自时间戳列

时间:2017-01-10 06:18:06

标签: date hadoop hive sql-timestamp

您好我正在尝试使用以下查询提取配置单元中时间戳列的月份和年份部分

select from_unixtime(unix_timestamp(upd_gmt_ts,'yyyyMM')) from  abc.test;

输出看起来像2016-05-20 01:08:48

所需的输出应为201605

感谢任何建议。

4 个答案:

答案 0 :(得分:12)

我更喜欢使用Hive date_format()(从Hive 1.2.0开始)。它支持Java SimpleDateFormat模式。

date_format()接受date/timestamp/string。所以你的最终查询将是

select date_format(upd_gmt_ts,'yyyyMM') from abc.test;

修改

  

SimpleDateFormat可接受的模式示例。

     

enter image description here

答案 1 :(得分:1)

您可以使用 CONCAT和FROM_UNIXTIME ,如下所示:

SELECT CONCAT(YEAR(FROM_UNIXTIME(1468215093)), MONTH(FROM_UNIXTIME(1468215093))) AS YEAR_MONTH

在您的查询中:

SELECT CONCAT(YEAR(FROM_UNIXTIME(upd_gmt_ts)), MONTH(FROM_UNIXTIME(upd_gmt_ts))) AS YEAR_MONTH
FROM abc.test;

答案 2 :(得分:1)

请使用以下查询

SELECT YEAR(FROM_UNIXTIME(unix_timestamp()))*100 + MONTH(FROM_UNIXTIME(unix_timestamp()))

答案 3 :(得分:0)

要查看yyyy-mm-dd hh:mm:ss格式的日期,您可以按照以下方式使用它:

select to_utc_timestamp(col_name, 'PST') * from table;