問題
您希望以微秒精度顯示時間戳值,但是當您使用顯示()它不會顯示超過毫秒的值。
例如,這個Apache Spark SQL顯示()命令:
% sql顯示(火花。sql("select cast('2021-08-10T09:08:56.740436' as timestamp) as test")
返回一個截斷後的值:
2021 - 08 - 10 - t09:08:56.740 + 0000
導致
在呈現輸出之前,DataFrame會在內部轉換為HTML。
這將顯示結果限製在毫秒級精度。
它不會影響存儲的值。
解決方案
你應該使用顯示()而不是使用顯示().
例如,這個Apache Spark SQL顯示()命令:
% sql火花。sql("select cast('2021-08-10T09:08:56.740436' as timestamp) as test").show(truncate=False)
返回正確的值:
2021-08-10 09:08:56.740436
作為一種替代方法,您可以創建第二個列並將值作為字符串複製到該列。
轉換為字符串後,顯示()顯示完整值。