hive13位时间戳转换:13毫秒对应什么时间?
当输入参数为13时,hive13位时间戳转换的结果是:13毫秒,对应ISO时间1970-01-01T00:00:13.000Z,UTC时间1970-01-01 00:00:13。
在线工具时间戳转换
13这个参数到底转成了什么
把13当作13位时间戳来转换,工具输出的毫秒值是13000,ISO格式为1970-01-01T00:00:13.000Z,UTC显示为1970-01-01 00:00:13。也就是说,13毫秒落在Unix纪元起点之后第13秒的位置。这个结果看起来简单,但它是理解13位时间戳含义的起点:13位时间戳以毫秒为单位,数字13代表的是13毫秒,而不是13秒。
换算步骤拆解:从13到可读时间
换算时,先把13按毫秒处理,得到13000毫秒;再换算成秒为13秒;最后以1970-01-01 00:00:00 UTC为基准加上13秒,得到1970-01-01 00:00:13 UTC。整个过程依赖时间戳转换工具对毫秒单位的识别。如果想手动验证,可以借助时间戳转换工具输入13,观察输出是否一致。
相邻参数对照:12、13、14的差别
把12、13、14放在一起看,结果分别是1970-01-01T00:00:12.000Z、1970-01-01T00:00:13.000Z、1970-01-01T00:00:14.000Z,毫秒值对应12000、13000、14000。每增加1,时间就往后走1秒。再看673,输出是1970-01-01T00:11:13.000Z,说明673毫秒等于11分13秒,和13的秒数部分一致只是分钟不同。这种对照能帮助确认13位时间戳的毫秒单位没有歧义。
反向换算与边界情况
如果已知可读时间反推13位时间戳,同样以毫秒为单位。例如输入-3587,输出毫秒为-3587000,ISO为1969-12-31T23:00:13.000Z;输入-647,输出毫秒为-647000,ISO为1969-12-31T23:49:13.000Z。负数表示1970年之前的时间,反向换算时要注意符号和单位。对于13这样的正数,反向结果就是13000毫秒。
在Hive场景中怎么理解这个结果
Hive里常把13位时间戳存成bigint,用from_unixtime时通常需要先除以1000转成秒。参数13对应的秒级值是13,所以from_unixtime(13)会得到1970-01-01 00:00:13(UTC)。如果直接拿13当秒处理,结果会变成1970-01-01 00:00:13,和毫秒转换的UTC时间一致,因为13毫秒的秒级部分就是13秒。但换成673,毫秒转换的UTC是00:11:13,而直接当秒处理会得到00:11:13,秒数部分相同,分钟数不同——这里容易混淆,务必先确认单位。
总结
参数13的hive13位时间戳转换结果是13000毫秒,对应UTC时间1970-01-01 00:00:13。理解毫秒单位并注意与秒级时间戳的区分,能避免在Hive中误用from_unixtime。
相关文章
- jq13位时间戳转换成日期:参数结果核对
说明参数13按Unix秒转换后的UTC日期,并区分数值13与13位毫秒时间戳。
- jq12位时间戳转换成日期:12 对应哪一刻?
参数 12 按 Unix 时间戳换算,对应 1970-01-01 00:00:12(UTC),毫秒数为 12000。本文说明结果含义、换算步骤与相邻参数对照。
- jdk8将时间戳转换成instant:8秒的转换结果
在JDK8中把时间戳8转换为Instant,结果是1970-01-01T00:00:08Z,对应UTC时间00:00:08,毫秒值8000。
- java时间戳转换日期格式14位:先分清秒与毫秒
从14位时间戳的位数困惑讲起,用实例说明秒与毫秒的差别,并给出Java格式化日期与排查错误的做法。
- java时间戳转换成时间6:从参数6看懂秒级换算
以参数6为例,讲清Java时间戳换算成时间的思路:秒与毫秒的区别、UTC与本地时区、边界值与常见报错排查。
常见问题
Q1参数13的13位时间戳转换结果为什么是13秒而不是13毫秒?
13位时间戳以毫秒为单位,13毫秒换算成秒是13秒的整数部分,可读时间会显示到秒级,所以UTC显示为1970-01-01 00:00:13,实际毫秒值是13000。
Q213和12、14的转换结果有什么不同?
12对应1970-01-01T00:00:12.000Z,13对应1970-01-01T00:00:13.000Z,14对应1970-01-01T00:00:14.000Z,每增加1,时间增加1秒。
Q3在Hive里用from_unixtime处理13需要先除以1000吗?
from_unixtime接收秒级时间戳,13位时间戳是毫秒,所以需要先除以1000。参数13除以1000后取整为0秒,显示为1970-01-01 00:00:00;如果不除,直接传13,会显示1970-01-01 00:00:13。
Q4负数时间戳如-3587转换后是什么?
-3587作为13位时间戳时,毫秒值为-3587000,ISO为1969-12-31T23:00:13.000Z,UTC为1969-12-31 23:00:13,表示1970年之前的时间。