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

如何结合int类型年、月两列使用BETWEEN进行日期范围筛选?

正确结合year和month字段使用BETWEEN筛选的方法

你的问题出在year+month的写法上——这是把两个整数相加,而不是拼接成你想要的YYYYMM格式。比如2018年2月,2018+2=2020,完全不是你期望的201802,所以筛选逻辑自然出错了。

这里给你两种靠谱的解决方案:

方法1:计算成YYYYMM数值(通用型)

把年份乘以100再加上月份,就能得到标准的YYYYMM格式的整数,之后就可以正常用BETWEEN了:

SELECT * FROM table 
WHERE (year * 100 + month) BETWEEN 201802 AND 202103;

括号是可选的,但加上能让逻辑更清晰,避免运算符优先级的潜在问题。

方法2:转换为日期类型(更直观)

如果你的数据库支持日期构造函数,可以把year和month转换成具体的日期(比如每月1号),再用日期范围筛选。这种方式更符合日期操作的逻辑,也方便后续扩展日期相关的查询:

  • SQL Server:
    SELECT * FROM table 
    WHERE DATEFROMPARTS(year, month, 1) BETWEEN '2018-02-01' AND '2021-03-01';
    
  • MySQL:
    SELECT * FROM table 
    WHERE MAKEDATE(year, month) BETWEEN '2018-02-01' AND '2021-03-01';
    
  • Oracle:
    SELECT * FROM table 
    WHERE TO_DATE(year || '-' || month || '-01', 'YYYY-MM-DD') BETWEEN DATE '2018-02-01' AND DATE '2021-03-01';
    

两种方法都能实现你的需求,选哪种取决于你的数据库类型和后续查询的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 14:32:29