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
相关产品推荐
相关产品推荐

