python - Pyspark:将 bigint 转换为以微秒为单位的时间戳
问题描述
我想将bigint
unix 时间戳转换为以下datetime
格式"yyyy-MM-dd HH:mm:ss:SSSSSS"
以包含微秒。当我使用标准到日期时间功能时,我得到以下信息
spark.sql("select to_timestamp(1605509165022529) as ts").show(truncate=False)
结果
+----------------------------+
|ts |
+----------------------------+
|22327-10-26 13:09:588.009408|
+----------------------------+
这datetime
是错误的。日期应为 2020-11-16,时间为HH:mm:ss:SSSSSS
.
我怎样才能得到这个?
解决方案
将您的时间戳除以 1e6,因为to_timestamp
需要一个以秒为单位的 unix 时间戳,而不是微秒。
spark.sql("select to_timestamp(1605509165022529/1e6) as ts").show(truncate=False)
+--------------------------+
|ts |
+--------------------------+
|2020-11-16 06:46:05.022529|
+--------------------------+
推荐阅读
- r - 在 R Shiny 中使用 renderTable 时如何格式化数字行输出?
- translation - 使用文本链接将谷歌翻译添加到网页,没有按钮没有下拉菜单
- android-studio - 需要将自定义 android 应用程序源代码的更改放在服务器上,以便客户端设备反映这些更改?
- machine-learning - 在 PyTorch 中逐层解冻模型
- swiftui - 使用切换 SwiftUI 更改自定义类的布尔值时遇到问题
- python - 当字符串名称与列表的任何元素部分匹配时排除它
- python - 如何将带有路径的图像从节点 js 发送到 python 脚本
- node.js - 正则表达式将 Markdown 中的文本 URL 转换为链接
- sml - 为什么我会为一个简单地为列表中的每个整数添加一个值的函数出现此错误?
- python-3.8 - AttributeError:模块“警告”没有属性“过滤器警告”