sql - Hive 字符串到时间戳的转换(以毫秒为单位)

标签 sql hive timestamp hiveql unix-timestamp

我需要转换上述输入字符串格式并以时间戳形式生成所需的输出,如下所示。

输入: 16AUG2001:23:46:32.876086

所需输出: 2001-08-16 23:46:32.876086

运行以下代码得出的输出:2001-08-17 00:01:08

查询:

select '16AUG2001:23:46:32.876086' as row_ins_timestamp,
       from_unixtime(unix_timestamp('16AUG2001:23:46:32.876086',
                     'ddMMMyyyy:HH:mm:ss.SSSSSS')) as row_ins_timestamp
from temp;

毫秒部分未按要求进行转换。请提出建议。

最佳答案

unix_timestamp 函数不保留毫秒。 不带毫秒进行转换,然后与毫秒部分连接:

with your_data as (
select stack(3,
'16AUG2001:23:46:32.876086',
'16AUG2001:23:46:32',
'16AUG2001:23:46:32.123'
) as ts
)

select concat_ws('.',from_unixtime(unix_timestamp(split(ts,'\\.')[0],'ddMMMyyyy:HH:mm:ss')),split(ts,'\\.')[1]) 
  from your_data;

结果:

2001-08-16 23:46:32.876086
2001-08-16 23:46:32
2001-08-16 23:46:32.123
Time taken: 0.089 seconds, Fetched: 3 row(s)

关于sql - Hive 字符串到时间戳的转换(以毫秒为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59643063/

相关文章:

sql - 用于具有多个角色/权限的用户管理的用户表设计

java - 使两列在sqlite中唯一

PHP:将文件时间戳与系统时间进行比较

db2 - z/OS 上的 DB2 CURRENT TIMESTAMP 是否返回唯一值?

sql - 如何在 SELECT INTO 之后保留数据类型?

sql - 将 .txt 文件加载到 Postgres 数据库中

string - 配置单元转换为日期dd-MM-yyyy

sql - Hadoop 层次结构之谜

hadoop - 插入到配置单元分区表中 SemanticException

timestamp - 保留毫秒精度的 Redshift 时间戳转换