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

Redash中PostgreSQL的DATEDIFF转日期及to_char用法咨询

Redash PostgreSQL环境下的日期处理解决办法

1. 替代DATEDIFF函数

PostgreSQL没有原生的DATEDIFF函数,计算两个日期的天数差可以直接用日期相减,或者用AGE()函数:

  • 直接减法写法:(remis_restricted.actchb_xlt_vw.install_date - '1900-01-01'::date)::int + 2
  • AGE函数写法:EXTRACT(DAY FROM AGE(remis_restricted.actchb_xlt_vw.install_date, '1900-01-01'::date))::int + 2

2. 把WING_INST_DT的数值转成日期类型

你得到的37714是从1900-01-01开始的天数偏移(还加了2),要转成日期,直接用基准日期加天数间隔就行:

-- 针对已有的37714数值转换
('1900-01-01'::date + (WING_INST_DT::int - 2) * INTERVAL '1 day') AS WING_INST_DATE

如果不想先算数值,直接在原SQL里生成日期:

('1900-01-01'::date + (remis_restricted.actchb_xlt_vw.install_date - '1900-01-01'::date) + INTERVAL '2 days') AS WING_INST_DATE

3. 用to_char把日期格式化为mm/dd/yyyy

拿到日期类型后,用to_char指定格式就能输出你要的字符串格式:

-- 直接格式化现有日期字段
to_char(remis_restricted.actchb_xlt_vw.install_date, 'MM/DD/YYYY') AS formatted_install_date
-- 格式化转换后的WING_INST_DATE
to_char(('1900-01-01'::date + (remis_restricted.actchb_xlt_vw.install_date - '1900-01-01'::date) + INTERVAL '2 days'), 'MM/DD/YYYY') AS formatted_WING_INST_DATE

4. 解决Redash默认日期格式问题

Redash默认会把日期显示成dd/mm/yyyy,只要你用to_char把日期转成字符串类型的MM/DD/YYYY格式,Redash就会直接显示你指定的格式,不会自动转换。如果是日期类型字段被自动转格式,直接套to_char转成字符串输出就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 08:25:08