在配置单元表中,有一个日期字段以字符串形式存储,格式如下:
YYYY-MM-DD hh:mm:ss.SSS
例如:
2020-01-20 07:41:21.86754
但是,我们看到了以下行为:
当我们选择pyspark中的列作为 to_timestamp()
,我们得到 NULL
.
当我们选择它作为普通字符串时,它显示为 2020-01-20 07:41:....
; 它没有显示全部值。
当我们试图截断毫秒时,它会正确地显示为秒 2020-01-20 07:41:21
-但是我们希望毫秒包含在pyspark日期框中,以执行转换。
什么是正确的方法来查询和提取存储为字符串的日期?
1条答案
按热度按时间qeeaahzv1#
在我开始之前,有一个关于时间格式的问题。为什么毫秒值是-86754?那意味着86秒754毫秒?你是说微秒?那就说得通了。
不管怎样,我试着用同样的日期格式来检查spark是否能处理它,它确实能。
考虑一个测试Dataframe
如您所见,将字符串转换为时间戳没有错误。我在spark 2.4.0中使用了这个。检查结果的数据类型
我仍然对你的意图感兴趣。当您必须处理时间戳时,例如通过将其转换为unix\u时间戳,您将获得两行相同的值,即使毫秒(在您的情况下是微秒)不同
当您尝试将时间戳转换为int时,结果也是一样的
希望这有帮助。如果我知道你需要什么,我可以解释更多。