hadoop - 如何在毫秒内将字符串日期转换为 hive 中的大整数

标签 hadoop hive bigdata

我有一个字符串 2013-01-01 12:00:01.546 代表一个带有毫秒的 timestamp 我需要将其转换为 bigint 不丢失毫秒数。

我试过 unix_timestamp 但我失去了毫秒数:

unix_timestamp(2013-01-01 12:00:01.546,'yyyy-MM-dd HH:mm:ss') ==> 1357059601
unix_timestamp(2013-01-01 12:00:01.786,'yyyy-MM-dd HH:mm:ss') ==> 1357059601

我也试过毫秒格式,但没有区别

unix_timestamp(2013-01-01 12:00:01.786,'yyyy-MM-dd HH:mm:ss:SSS') ==> 1357059601

有什么方法可以在配置单元中获得毫秒差异?

最佳答案

到目前为止,这是我带来的。
如果您所有的时间戳都只有 3 位数的一小部分,则可以简化它。

with t as (select timestamp '2013-01-01 12:00:01.546' as ts)
select  cast ((to_unix_timestamp(ts) + coalesce(cast(regexp_extract(ts,'\\.\\d*',0) as decimal(3,3)),0)) * 1000 as bigint)
from    t

1357070401546

结果验证:

select from_utc_timestamp (1357070401546,'UTC')

2013-01-01 12:00:01.546000

关于hadoop - 如何在毫秒内将字符串日期转换为 hive 中的大整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44653257/

相关文章:

java - 使用配置单元出现异常 java.lang.NoClassDefFoundError : org/apache/tez/dag/api/SessionNotRunning

hadoop - Sqoop-Hive导入

hbase - 统计HBase表中列族的记录数

hadoop - 如何将 hadoop 辅助名称节点与主名称节点分开?

python - 在anaconda上的python脚本中指定hdfs目录的路径

hadoop - 在不使用自定义UDF或左联接的情况下如何在Hive中进行关键操作?

hadoop - 使用 pig/hive 进行半结构化数据处理

hadoop - 通过Hive,如何获取最近的记录?

mysql - 如何有效地将 hadoop 与大型 MySQL 数据库一起使用?

java - Hadoop上的运行字数统计