10

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

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

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

所需的输出应该是 201605

感谢任何建议。

4

4 回答 4

28

我更喜欢使用 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可接受的模式示例。

在此处输入图像描述

于 2017-01-10T06:47:54.320 回答
2

您可以使用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;
于 2017-01-10T06:30:35.997 回答
2

请使用以下查询

SELECT YEAR(FROM_UNIXTIME(unix_timestamp()))*100 + MONTH(FROM_UNIXTIME(unix_timestamp()))
于 2017-06-09T11:30:32.930 回答
1

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

select to_utc_timestamp(col_name, 'PST') * from table;
于 2017-07-10T09:54:10.560 回答