在 presto 中将 bigint 转换为时间戳
Converting bigint to timestamp in presto
我的数据集中有一列的数据类型为 bigint:
Col1 Col2
1 1519778444938790
2 1520563808877450
3 1519880608427160
4 1520319586578960
5 1519999133096120
如何将 Col2 转换为以下格式:
年月日hr:mm:ss
我不确定当前专栏的格式,但我知道它应该是时间戳。
任何帮助都会很棒,谢谢!
你试过使用from_unixtime
这样的函数吗?您可以使用它将 unix 时间转换为时间戳,然后您可以使用 date_format
以您想要的方式显示它。请注意,在您的示例中,您的 unix 时间是微秒,因此您可能希望先将其转换为毫秒。
我还没有测试过,但我假设你的代码应该是这样的:
date_format(from_unixtime(col2/1000), '%Y-%m-%d %h:%i:%s')
请注意 from_unixtime
也接受时区。
请访问此页面以查看有关日期相关功能的更多详细信息:https://docs.starburstdata.com/latest/functions/datetime.html
我认为分母应该是 1000000 而不是 1000。可能是打字错误。无论如何,在这里添加测试结果以供其他人参考。
-- 微秒
select date_format(from_unixtime(cast('1519778444938790' as bigint)/1000000), '%Y-%m-%d %h:%i:%s');
2018-02-2812:40:44
如果需要过滤列为BIGINT Unix格式的数据,则可以使用以下代码段进行比较:from_unixtime(d.started_on /1000) >= CAST('2022-05-10 22:00:00' AS TIMESTAMP )
我的数据集中有一列的数据类型为 bigint:
Col1 Col2
1 1519778444938790
2 1520563808877450
3 1519880608427160
4 1520319586578960
5 1519999133096120
如何将 Col2 转换为以下格式:
年月日hr:mm:ss
我不确定当前专栏的格式,但我知道它应该是时间戳。
任何帮助都会很棒,谢谢!
你试过使用from_unixtime
这样的函数吗?您可以使用它将 unix 时间转换为时间戳,然后您可以使用 date_format
以您想要的方式显示它。请注意,在您的示例中,您的 unix 时间是微秒,因此您可能希望先将其转换为毫秒。
我还没有测试过,但我假设你的代码应该是这样的:
date_format(from_unixtime(col2/1000), '%Y-%m-%d %h:%i:%s')
请注意 from_unixtime
也接受时区。
请访问此页面以查看有关日期相关功能的更多详细信息:https://docs.starburstdata.com/latest/functions/datetime.html
我认为分母应该是 1000000 而不是 1000。可能是打字错误。无论如何,在这里添加测试结果以供其他人参考。
-- 微秒
select date_format(from_unixtime(cast('1519778444938790' as bigint)/1000000), '%Y-%m-%d %h:%i:%s');
2018-02-2812:40:44
如果需要过滤列为BIGINT Unix格式的数据,则可以使用以下代码段进行比较:from_unixtime(d.started_on /1000) >= CAST('2022-05-10 22:00:00' AS TIMESTAMP )