You need to enable JavaScript to run this app. Scala Spark DataFrame中yyyymmddhh24miss字符串转指定日期格式如何实现
优惠活动
大模型
产品
解决方案
定价
更多

Scala Spark DataFrame中yyyymmddhh24miss字符串转指定日期格式如何实现

解决方案

你可以直接用Spark内置的to_timestamp和date_format函数组合实现需求,不需要自定义UDF,性能更好:

  1. 先用to_timestamp函数指定输入字符串的格式为yyyyMMddHHmmss,把字符串类型的last_edit转换为时间类型
  2. 再用date_format函数把时间类型按照你需要的dd-MM-yyyy HH:mm:ss格式输出即可

修改后的代码如下:

%scala
import org.apache.spark.sql.functions._

val DF_MelbParkBayInfo = spark.sql("select the_geom,marker_id,meter_id,bay_id, last_edit, rd_seg_id,rd_seg_dsc from temp_MelbParkBayInfo")

// 转换last_edit字段,下面两种写法按需二选一
// 写法1:保留原始last_edit字段,新增格式化后的新字段
val resultDF = DF_MelbParkBayInfo.withColumn("last_edit_formatted",
  date_format(
    to_timestamp(col("last_edit"), "yyyyMMddHHmmss"),
    "dd-MM-yyyy HH:mm:ss"
  )
)

// 写法2:直接覆盖原始last_edit字段
// val resultDF = DF_MelbParkBayInfo.withColumn("last_edit",
//   date_format(
//     to_timestamp(col("last_edit"), "yyyyMMddHHmmss"),
//     "dd-MM-yyyy HH:mm:ss"
//   )
// )

注意事项

  • 时间格式符区分大小写:MM代表月份,mm代表分钟;HH代表24小时制小时,hh代表12小时制小时,写错格式符会导致转换结果错误或者返回null
  • 若存在不符合yyyyMMddHHmmss格式的脏数据,转换后会返回null,可以通过resultDF.filter(col("last_edit_formatted").isNull).show()筛选出异常数据单独处理

内容的提问来源于stack exchange,提问作者mmoayed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 01:42:02