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

Azure Databricks字符串转Timestamp报错:多余输入'timestamp'

解决Spark SQL修改列类型的ParseException及日期转换问题

错误原因

你使用的ALTER TABLE语法不符合Spark SQL规范。Spark SQL中修改列类型需要使用ALTER COLUMN <列名> TYPE <新类型>的格式,而非直接指定类型,这是导致ParseException的直接原因。

此外,你的日期字符串格式(M/d/yyyy h:mm:ss a)与Spark默认的timestamp格式(yyyy-MM-dd HH:mm:ss)不匹配,即使语法正确,直接修改类型也会触发解析失败。

解决方案

分三步完成列类型转换:

  1. 添加临时timestamp列并转换数据
    使用to_timestamp函数指定日期格式,将原字符串列转换为timestamp类型存入临时列:

    ALTER TABLE convertToTimeStamp ADD COLUMN FinalDate_temp TIMESTAMP;
    UPDATE convertToTimeStamp SET FinalDate_temp = to_timestamp(FinalDate, 'M/d/yyyy h:mm:ss a');
    
  2. 删除原字符串列

    ALTER TABLE convertToTimeStamp DROP COLUMN FinalDate;
    
  3. 重命名临时列为原列名

    ALTER TABLE convertToTimeStamp RENAME COLUMN FinalDate_temp TO FinalDate;
    

验证结果

执行完上述步骤后,可通过以下语句验证列类型和数据:

DESCRIBE convertToTimeStamp;
SELECT FinalDate FROM convertToTimeStamp LIMIT 3;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:22:08