【问题标题】:Spark Scala - convert Timestamp with milliseconds to Timestamp without millisecondsSpark Scala - 将带毫秒的时间戳转换为不带毫秒的时间戳
【发布时间】:2019-11-23 08:49:42
【问题描述】:

我有一个Timestamp 格式的列,其中包括毫秒。

我想重新格式化我的timestamp 列,使其不包含毫秒。例如,如果我的 Timestamp 列具有 2019-11-20T12:23:13.324+0000 之类的值,我希望重新格式化的 Timestamp 列具有 2019-11-20T12:23 的值: 13

spark-scala 中是否有直接的方法来执行此操作?我发现很多关于将字符串转换为时间戳的帖子,但不是为了更改timestamp 的格式。

【问题讨论】:

标签: scala apache-spark apache-spark-sql timestamp


【解决方案1】:

【讨论】:

  • 感谢您的帖子塞萨尔。使用 date_trunc 和 "Second" 作为我的时间度量几乎可以让我到达那里。但是,我的日期从 2019-11-20T00:23:00.324+0000 变为 2019-11-20T00:23:00.000+0000。所以它只是将所有小于 1 秒的值设置为 0,而不是丢弃那些值。我希望我的时间戳格式完全下降毫秒并返回“yyyy-mm-ddTHH:mm:ss”,毫秒及以下没有值(甚至为 0)。
  • 那您正在寻找日期格式,请检查:sparkbyexamples.com/spark/…
  • 感谢@Cesar,它提供了正确的日期时间,没有毫秒,而是作为字符串列。我采用了该字符串列并应用了我能找到的所有方法来转换回时间戳,但在每种情况下,转换都会重新添加毫秒值。这包括使用 unix_timestamp、to_timestamp、cast(TimestampType).as("timestamp")。再次感谢您的帮助,还有其他建议吗?
  • 我遇到的毫秒问题是,如果毫秒不为零,我无法上传到数据库表。使用您上一篇文章中的 date_format 重新格式化 with 列代码: .withColumn("DTTM", date_format(DF("DTTM"), "yyyy-MM-dd HH:mm:ss").cast(TimestampType)) 提供时间戳为零毫秒+纳秒。虽然我认为这仍然是转移的问题,但事实并非如此,转移发生时没有错误。感谢您的帮助@Cesar!
猜你喜欢
  • 2016-03-04
  • 2013-03-09
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 2012-10-12
相关资源
最近更新 更多