You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将现有列值转换为DateType并新增对应日期类型列

日期类型转换实现方法

从截图的取值可以看到,你的原始列存储的是ISO 8601标准格式的日期时间字符串(日期和时间用T分隔,例如2024-01-15T09:30:00这类格式),不同技术栈下新增DateType类型列的实现方式如下:

Spark环境(对应官方DateType数据类型)

Spark的to_date内置函数原生支持这类标准格式解析,不需要额外写复杂规则:

  • PySpark API 实现
from pyspark.sql import functions as F
# 假设原列名为raw_time,新增日期列命名为dt
df = df.withColumn("dt", F.to_date(F.col("raw_time")))
  • Spark SQL 实现
SELECT *, to_date(raw_time) AS dt FROM your_table_name;
  • 异常兼容处理:如果存在脏数据导致自动解析失败,可以手动指定字符串格式规则匹配
# 对应yyyy-MM-dd'T'HH:mm:ss格式的解析规则
df = df.withColumn("dt", F.to_date(F.col("raw_time"), "yyyy-MM-dd'T'HH:mm:ss"))

注意:to_date转换后返回的是纯日期类型,会自动丢弃原始字符串里的时分秒信息;如果需要保留完整时间精度,改用to_timestamp函数转换为TimestampType即可。

Pandas环境

用pandas做数据处理时,可以用pd.to_datetime完成转换:

  • 基础自动识别实现
import pandas as pd
# 新增日期列
df["dt"] = pd.to_datetime(df["raw_time"]).dt.date
  • 手动指定格式实现(解决解析异常问题)
df["dt"] = pd.to_datetime(df["raw_time"], format="%Y-%m-%dT%H:%M:%S").dt.date

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 13:12:23