如何删除时间戳spark sql中的毫秒

Bab*_*abu 8 hive apache-spark-sql

我想在通过spark sql选择列时删除毫秒部分。

例如: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
Run Code Online (Sandbox Code Playgroud)

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

提前致谢

Sal*_*lim 9

对于正在寻找 Spark DataFrame 方法解决方案的每个人:如果您的列是 Timestamp 类型而不是 String 类型,您可以使用以下函数date_trunc("second", column):

// remove milliseconds of datetime column
val df2 = df.withColumn("datetime", date_trunc("second", col("datetime")))
Run Code Online (Sandbox Code Playgroud)


Man*_*pta 3

由于您的时间戳值是字符串并且您将其转换为时间戳,因此您可以使用 substring 函数尝试它。

第二个选项:

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

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

我希望,这会起作用。

谢谢,马努