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

如何从timestamp类型列the_date_transaction中排除2020年?

问题分析与解决方案

你的WHERE子句存在两个关键错误,导致查询无结果:

  • 同一个日期不可能同时落在2019年区间和2021-2022区间,用AND连接两个互斥的BETWEEN条件,逻辑上永远无法匹配到数据。
  • 日期'2022-11-31'无效,11月仅有30天,这个错误也会干扰数据匹配逻辑。

正确的WHERE子句写法

方法1:用OR连接有效区间

WHERE 
    tdt.the_date_transaction BETWEEN '2019-01-01' AND '2019-12-31 23:59:59'
    OR tdt.the_date_transaction BETWEEN '2021-01-01' AND '2022-11-30 23:59:59'

注:timestamp类型建议加上时分秒,避免遗漏当天最后一刻的数据;多数数据库支持日期字符串直接与timestamp类型比较,无需to_date转换

方法2:直接排除2020年数据(更简洁)

WHERE 
    YEAR(tdt.the_date_transaction) != 2020

此写法直观过滤掉所有年份为2020的记录,无需拆分区间

方法3:用范围判断规避日期天数问题

WHERE 
    tdt.the_date_transaction < '2020-01-01'
    OR tdt.the_date_transaction >= '2021-01-01'

这种写法无需纠结月份天数,覆盖所有2020年之前及之后的数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:05:16