如何在timestampsparksql中删除毫秒

sqougxex  于 2021-06-26  发布在  Hive
关注(0)|答案(3)|浏览(435)

在通过sparksql选择列时,我想删除毫秒部分。
传真: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

两者似乎都不起作用,子字符串的工作,但我需要时间戳格式,有没有其他办法呢?
提前谢谢

2ledvvac

2ledvvac1#

解决这个问题的方法是 to_timestamp 函数,如果要将值移动到新列

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

c2e8gylq2#

对于正在寻找使用sparkDataframe方法的解决方案的每个人:如果列的类型是timestamp而不是string,那么可以使用 date_trunc("second", column) 功能:

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

vmjh9lq93#

由于您的时间戳值是字符串,并且您要将其强制转换为时间戳,所以可以使用substring函数来尝试。
第二种选择:

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

您没有提供输入格式,这可能是导致错误的原因。
我希望,这能奏效。
谢谢,马努

相关问题