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

Spark SQL如何将整数类型日期转为正确格式以使用dayofweek函数

Spark SQL整数格式YYYYMMDD字段转日期解决方案

错误原因

直接将整数类型的日期值CAST为Timestamp时,Spark会默认把整数值识别为Unix时间戳(距离1970-01-01 00:00:00的秒数/毫秒数),你给出的19860102作为秒数计算后自然得到1970年左右的错误时间。

纯SQL实现方案(无需调用F开头的DataFrame内置函数)

核心逻辑是先将整数字段转为字符串,再通过日期解析函数指定yyyyMMdd格式完成转换,所有逻辑都可以直接在SQL语句中实现:

  • 转换为标准DATE类型:
SELECT to_date(cast(date AS string), 'yyyyMMdd') AS correct_date FROM table
  • 转换为标准TIMESTAMP类型:
SELECT to_timestamp(cast(date AS string), 'yyyyMMdd') AS correct_ts FROM table
  • 直接调用dayofweek计算星期:
SELECT dayofweek(to_date(cast(date AS string), 'yyyyMMdd')) AS week_day FROM table

注:dayofweek返回值范围为1(周日)到7(周六),符合标准SQL规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:54:07