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

SQL时间范围查询问题:如何筛选2008-2023年出生的记录?

解决SQL筛选2008-2023年出生记录的问题

修正日期范围的完整性

你当前语句的结束日期是#12/12/2023#,会漏掉2023年12月13日至12月31日出生的记录,应该调整为#12/31/2023#,修正后的基础语句:

WHERE Table1.DOB BETWEEN #1/1/2008# AND #12/31/2023#

适配不同数据库的日期语法

不同数据库对日期的写法规则不同,如果你用的不是Access这类用#包裹日期的数据库,需要按对应语法调整:

  • MySQL/PostgreSQL:用单引号包裹日期
    WHERE Table1.DOB BETWEEN '2008-01-01' AND '2023-12-31'
    
  • SQL Server:推荐用无分隔符的日期格式(避免解析错误)
    WHERE Table1.DOB BETWEEN '20080101' AND '20231231'
    

处理DOB字段的类型问题

如果DOB字段存储的是字符串而非日期类型,直接比较会出错,需要先转换类型:

  • Access:用CDate转换字符串为日期
    WHERE CDate(Table1.DOB) BETWEEN #1/1/2008# AND #12/31/2023#
    
  • MySQL:假设字符串格式为MM/DD/YYYY,用STR_TO_DATE转换
    WHERE STR_TO_DATE(Table1.DOB, '%m/%d/%Y') BETWEEN '2008-01-01' AND '2023-12-31'
    

直接按年份筛选(更稳妥)

如果只关注出生年份,可直接提取年份进行比较,规避日期格式的潜在问题:

  • Access:
    WHERE Year(Table1.DOB) >= 2008 AND Year(Table1.DOB) <= 2023
    
  • MySQL:
    WHERE YEAR(Table1.DOB) >= 2008 AND YEAR(Table1.DOB) <= 2023
    
  • SQL Server:
    WHERE DATEPART(year, Table1.DOB) >= 2008 AND DATEPART(year, Table1.DOB) <= 2023
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:25:01