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

Hive 如何删除时间戳spark sql中的毫秒,hive,apache-spark-sql,Hive,Apache Spark Sql,我想在通过spark sql选择列时删除毫秒部分 Ex:2012-10-17 13:02:50.320 我希望结果是2012-10-17 13:02:50 我试过了 两者似乎都不起作用,子字符串起作用,但我需要时间戳格式,还有其他方法吗 提前感谢因为您的时间戳值是string,并且您正在将其转换为timestamp,所以您可以使用substring函数来尝试 第二种选择: spark.sql("select from_unixtime(unix_timestamp(datecol, 'yyyy-

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

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

我希望结果是2012-10-17 13:02:50 我试过了

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


提前感谢

因为您的时间戳值是string,并且您正在将其转换为timestamp,所以您可以使用substring函数来尝试

第二种选择:

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'))

对于正在寻找使用spark DataFrame方法的解决方案的所有人: 如果列的类型为Timestamp而不是String,则可以使用
date\u trunc(“second”,column)
函数:

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