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

Databricks 9.1执行SQL报datetime不支持错误,SQL Server可正常运行

问题解决:Databricks 9.1 SQL中DataType datetime不支持的错误

问题原因

Databricks Spark SQL(9.1版本)不支持SQL Server的datetime数据类型,需替换为Spark兼容的timestamp或date类型;同时部分SQL Server函数在Spark SQL中有不同实现,比如DATEADD(Spark中用ADD_MONTHS处理月份增减)、GETDATE(对应CURRENT_TIMESTAMP)、EOMONTH(对应LAST_DAY),且无需通过FORMAT转字符串再转换日期,直接用日期函数操作更高效可靠。

修正后的SQL语句

SELECT
  LAST_DAY(ADD_MONTHS(TRUNC(CURRENT_TIMESTAMP(), 'MM'), -14)) AS eom,
  ADD_MONTHS(TRUNC(CURRENT_TIMESTAMP(), 'MM'), -14) AS start_tm2

关键替换说明

  • CURRENT_TIMESTAMP():替换SQL Server的GETDATE(),获取当前时间戳
  • ADD_MONTHS(date, num_months):替换DATEADD(month, ...),专门用于月份增减(你提到的date_add是Spark中处理天数增减的函数,不适合月份操作,这也是它无法正常工作的原因)
  • TRUNC(date, 'MM'):将日期截断到当月第一天,替代原SQL中FORMAT(..., 'yyyy-MM-01 00:00:00.000')的逻辑,无需字符串转换
  • LAST_DAY(date):替换EOMONTH(),获取指定日期所在月份的最后一天
  • 结果自动匹配timestamp类型,符合你期望的输出格式

验证输出

执行后将得到如下结果:

eomstart_tm2
2021-11-302021-11-01 00:00:00.000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:35:16