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

如何用SQL查询BigInt格式ordermonth字段近11个月至当月的记录

实现思路

核心需求为筛选出*当前月到往前11个月(共12个自然月)*区间内的所有记录,ordermonth为BIGINT类型且存储格式固定为合法的YYYYMM,最优实现方案是先计算出区间上下限的YYYYMM格式数值,直接和ordermonth做数值比较,该方式可以命中ordermonth上的索引,性能远高于将字段转日期后比较的写法。

不同数据库实现代码

MySQL

SELECT * 
FROM 替换为你的表名
WHERE ordermonth BETWEEN 
  DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 11 MONTH), '%Y%m') + 0
  AND 
  DATE_FORMAT(CURDATE(), '%Y%m') + 0;

说明:+0用于将生成的日期字符串转为数值,避免隐式转换导致索引失效。

PostgreSQL

SELECT *
FROM 替换为你的表名
WHERE ordermonth BETWEEN 
  TO_CHAR(CURRENT_DATE - INTERVAL '11 months', 'YYYYMM')::BIGINT
  AND
  TO_CHAR(CURRENT_DATE, 'YYYYMM')::BIGINT;

SQL Server

SELECT *
FROM 替换为你的表名
WHERE ordermonth BETWEEN 
  CAST(FORMAT(DATEADD(MONTH, -11, GETDATE()), 'yyyyMM') AS BIGINT)
  AND
  CAST(FORMAT(GETDATE(), 'yyyyMM') AS BIGINT);

Oracle

SELECT *
FROM 替换为你的表名
WHERE ordermonth BETWEEN 
  TO_NUMBER(TO_CHAR(ADD_MONTHS(SYSDATE, -11), 'YYYYMM'))
  AND
  TO_NUMBER(TO_CHAR(SYSDATE, 'YYYYMM'));
注意事项

所有写法均自动处理跨年场景,生成的区间上下限完全符合数值比较逻辑,不需要额外做格式兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:45:04