Hive Apache配置单元-时间戳查询
我在配置单元数据库中有两个时间戳列,以以下格式存储时间戳:Hive Apache配置单元-时间戳查询,hive,timestamp,Hive,Timestamp,我在配置单元数据库中有两个时间戳列,以以下格式存储时间戳: hive> select last_date from xyz limit 2; OK 2019-08-21 15:11:23.553 2019-08-21 15:11:23.553 [默认情况下,上面存储了毫秒] hive> select last_modify_date from xyz limit 2; OK 2018-04-18 23:32:58 2017-09-22 04:02:32 我需要一个通用的配置单
hive> select last_date from xyz limit 2;
OK
2019-08-21 15:11:23.553
2019-08-21 15:11:23.553
[默认情况下,上面存储了毫秒]
hive> select last_modify_date from xyz limit 2;
OK
2018-04-18 23:32:58
2017-09-22 04:02:32
我需要一个通用的配置单元选择查询,该查询将上述两个时间戳转换为“YYYY-MM-DD HH:MM:ss.SSS”格式,如果存在,则保留毫秒值,如果不存在,则追加“.000”
到目前为止,我所尝试的:
select
last_modify_date,
from_unixtime(unix_timestamp(last_modify_date), "yyyy-MM-dd HH:mm:ss.SSS") as ts
from xyz limit 3;
但是,上面的查询为上述两个时间戳列显示“.000”
请帮助从实现unix\u时间戳
的中,您可以看到返回值以秒为单位,由长可写
表示。任何小于1秒的都被四舍五入
您可以编写自己的UDF,也可以使用纯SQL来实现这一点。一个简单的方法是使用
rpad
:
select rpad(your_date, 23, '.000') from your_table;
一些例子:
hive> select rpad('2018-04-18 23:32:58', 23, '.000');
OK
2018-04-18 23:32:58.000
hive> select rpad('2018-04-18 23:32:58.553', 23, '.000');
OK
2018-04-18 23:32:58.553