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

如何将Oracle SQL中取上一年7月至当年6月的过滤条件转为Teradata SQL?

Teradata 适配的日期过滤SQL

最优实现(日期函数方式,避免字符串拼接)

SELECT *
FROM C.Data DM
WHERE DM.Dateofdata BETWEEN
    ADD_MONTHS(TRUNC(CURRENT_DATE, 'YYYY'), -6) -- 上一年7月1日
    AND ADD_MONTHS(TRUNC(CURRENT_DATE, 'YYYY'), 6) - INTERVAL '1' DAY; -- 当年6月30日

与原Oracle逻辑对齐的字符串拼接方式

如果偏好和原代码逻辑一致的字符串拼接写法,Teradata兼容版本如下:

SELECT *
FROM C.Data DM
WHERE DM.Dateofdata BETWEEN
    TO_DATE('01-07-' || EXTRACT(YEAR FROM CURRENT_DATE) - 1, 'DD-MM-YYYY')
    AND TO_DATE('30-06-' || EXTRACT(YEAR FROM CURRENT_DATE), 'DD-MM-YYYY');

关键差异说明

  • Teradata中用CURRENT_DATE替代Oracle的SysDate,用于获取当前系统日期
  • 日期函数方式更高效且规避格式转换风险:
    • TRUNC(CURRENT_DATE, 'YYYY') 提取当年1月1日的日期值
    • ADD_MONTHS(..., -6) 将当年1月1日往前推6个月,得到上一年7月1日
    • ADD_MONTHS(..., 6) - INTERVAL '1' DAY 将当年1月1日往后推6个月再减1天,精准得到当年6月30日

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:01:01