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

Redshift中查询UNIX时间戳列指定日期范围数据报错如何解决

问题原因

  • 核心报错根源是字段类型不匹配:impression_time 是UNIX时间戳格式,本质为整数类型(存储1970-01-01到对应时间的秒数),你直接在WHERE条件中将整数和'2021-09-01'这类字符串格式的日期对比,会触发类型校验错误。
  • 额外逻辑隐患:SELECT中给转换后的日期设置的别名和原字段重名,后续容易引发逻辑混淆,建议修改别名。

最优解法

写法1(推荐,性能最优)

将筛选日期转换为UNIX时间戳和原字段比对,不需要对表中每行数据做转换,可利用字段索引:

SELECT 
  split_part((timestamp '1970-01-01'::date + impression_time * interval '1 second'), ' ', 1) AS impression_date
FROM impression_db
WHERE impression_time >= EXTRACT(EPOCH FROM '2021-09-01'::timestamp)::INT
  AND impression_time < EXTRACT(EPOCH FROM '2021-10-01'::timestamp)::INT

写法2(适配复杂日期筛选场景)

将原字段转换为日期类型后比对,适合需要灵活做日期运算的场景:

SELECT 
  split_part((timestamp '1970-01-01'::date + impression_time * interval '1 second'), ' ', 1) AS impression_date
FROM impression_db
WHERE (timestamp '1970-01-01'::date + impression_time * interval '1 second') >= '2021-09-01'::timestamp
  AND (timestamp '1970-01-01'::date + impression_time * interval '1 second') < '2021-10-01'::timestamp

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:36:02