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

如何编写SQL查询regd表中2017年8月至2018年3月的人员数据

查询2017年8月至2018年3月人员的SQL方案

嗨,我来帮你搞定这个查询需求!针对你的regd表结构,这里有两种实用的查询方法,你可以根据自己的数据库类型和性能需求选择:

方法1:直接通过年份和月份字段判断(性能优先)

这种写法不需要转换字段类型,能直接利用year和month字段的索引(如果有的话),适合数据量较大的场景:

SELECT name
FROM regd
WHERE 
    (year = 2017 AND month >= 8) 
    OR 
    (year = 2018 AND month <= 3);

逻辑很清晰:筛选出2017年8月及以后的记录,加上2018年3月及以前的记录,两者的并集就是你要的时间段数据。

方法2:转换为日期类型后使用范围查询(可读性优先)

如果觉得分段判断不够直观,可以把year和month拼接成日期,再用BETWEEN来筛选范围。不过要注意不同数据库的日期转换函数略有差异:

MySQL版本

SELECT name
FROM regd
WHERE STR_TO_DATE(CONCAT(year, '-', month, '-01'), '%Y-%m-%d') 
BETWEEN '2017-08-01' AND '2018-03-01';

PostgreSQL版本

SELECT name
FROM regd
WHERE TO_DATE(CONCAT(year, '-', month), 'YYYY-MM') 
BETWEEN '2017-08-01' AND '2018-03-01';

SQL Server版本

SELECT name
FROM regd
WHERE CAST(CONCAT(year, '-', month, '-01') AS DATE) 
BETWEEN '2017-08-01' AND '2018-03-01';

这种写法把年份和月份转换成具体的日期(这里统一用每月1号),然后直接判断是否在目标日期范围内,可读性更强,但如果数据量很大,可能会因为函数转换无法使用索引,性能略逊于第一种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:10:11