如何在时间戳SPARK SQL中删除毫秒



我想在通过Spark SQL选择列时删除Milli秒部分。

ex:2012-10-17 13:02:50.320

我希望结果为2012-10-17 13:02:50我尝试了

spark.sql("select cast(datecol as timestamp) from table 
spark.sql("select unix_timestamp(datecol,"yyyy-MM-dd HH:mm:ss") from table

两者似乎都不起作用,子字符串有效,但我需要时间戳格式,还有其他方法可以做吗?

预先感谢

对于每个正在使用Spark DataFrame方法的解决方案的人:如果您的列是时间戳类型而不是字符串,则可以使用date_trunc("second", column)函数:

// remove milliseconds of datetime column
val df2 = df.withColumn("datetime", date_trunc("second", col("datetime")))

,因为您的时间戳值是字符串,并且您将其施放到时间戳,您可以使用子字符串函数尝试。

第二个选项:

spark.sql("select from_unixtime(unix_timestamp(datecol, 'yyyy-MM-dd HH:mm:ss.SSS'),'yyyy-MM-dd HH:mm:ss') from table")

您没有提供输入格式,这可能是您遇到错误的原因。

我希望,这会起作用。

谢谢manu

解决方法是使用 to_timestamp函数如果要将值移至新列

df = df.withColumn("New Column", to_timestamp("DateTimeCol", 'yyyy-MM-dd HH:mm:ss'))

相关内容

  • 没有找到相关文章

最新更新