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

如何在Spark SQL中选取Unix日期格式的昨日日期?

在Spark SQL中筛选Unix时间戳为昨日的数据

核心思路

有两种常用实现方式:

  • 将Unix时间戳转换为日期格式,直接与昨日日期对比
  • 计算昨日日期对应的Unix时间戳范围,通过范围匹配筛选(效率更高,适合大数据场景)

场景1:Unix时间戳为秒级

方式1:转换为日期对比

SELECT * 
FROM your_table 
WHERE date_format(from_unixtime(`date`), 'yyyy-MM-dd') = date_format(date_sub(current_date(), 1), 'yyyy-MM-dd')

方式2:时间戳范围匹配(推荐)

SELECT * 
FROM your_table 
WHERE `date` BETWEEN unix_timestamp(date_sub(current_date(), 1)) 
                  AND unix_timestamp(current_date()) - 1

场景2:Unix时间戳为毫秒级

如果时间戳是毫秒格式(如1699996800000),需先转换为秒级再处理:

方式1:转换为日期对比

SELECT * 
FROM your_table 
WHERE date_format(from_unixtime(`date` / 1000), 'yyyy-MM-dd') = date_format(date_sub(current_date(), 1), 'yyyy-MM-dd')

方式2:时间戳范围匹配(推荐)

SELECT * 
FROM your_table 
WHERE `date` BETWEEN unix_timestamp(date_sub(current_date(), 1)) * 1000 
                  AND (unix_timestamp(current_date()) * 1000) - 1

关键函数说明

  • current_date():获取当前系统日期
  • date_sub(current_date(), 1):计算昨日日期
  • from_unixtime(ts):将秒级Unix时间戳转换为可读时间字符串
  • date_format(date_str, pattern):将时间字符串格式化为指定日期格式(如yyyy-MM-dd)
  • unix_timestamp(date):将日期转换为对应的秒级Unix时间戳

注意:如果字段名为date,需用反引号`包裹,避免与SQL关键字冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:35:20