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

Redshift中如何实现MySQL TO_DAYS()函数的等效功能

Redshift 适配MySQL TO_DAYS()天数差计算方案

MySQL的TO_DAYS()会返回日期距公元0年的累计天数,两个日期调用该函数做差,本质就是求两个日期的间隔天数。Redshift无此函数,AGE()返回的是时间间隔类型,无法直接做数值运算,直接替换会报错。

直接用Redshift原生DATEDIFF函数即可实现完全一致的逻辑,函数用法:
DATEDIFF(day, 开始日期, 结束日期)
返回值为两个日期间隔的整数天数,和TO_DAYS(结束日期) - TO_DAYS(开始日期)的计算结果完全匹配。

改写后的可直接运行代码:

SELECT 
     AVG(CASE WHEN s_status = 'finish' THEN DATEDIFF(day, date2, date1) ELSE NULL 
         END) AS avg_time,
     SUM(CASE WHEN s_status = 'finish' AND DATEDIFF(day, date2, date1) <= 7 THEN 1 
         ELSE 0 END) AS one_week_time
FROM 你的表名;

注意事项

  • 如果date1/date2是字符串格式存储的日期,需要先用TO_DATE(字段名, '日期格式串')转为DATE类型再传入计算,避免隐式转换出现异常结果。
  • 注意DATEDIFF的参数顺序:单位在前,起始日期在中间,结束日期在最后,顺序写反会得到负的天数差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 07:12:34