如何在SQL的WHERE子句中查询特定日期前出生的经理
解决DATE类型列查询1973年之前出生记录的问题
你的问题出在日期格式不完整:当你用'1973'和DATE类型的birth_date列比较时,数据库无法正确解析这个不完整的日期字符串,导致查询异常。
通用解决方案(适用于大多数数据库)
直接使用完整的日期常量'1973-01-01'进行比较,明确筛选出所有早于1973年1月1日的记录:
SELECT birth_date FROM managers WHERE birth_date < '1973-01-01';
可选方案(利用日期函数)
如果你的数据库支持提取年份的函数,也可以这样写:
MySQL示例
SELECT birth_date FROM managers WHERE YEAR(birth_date) < 1973;
PostgreSQL示例
SELECT birth_date FROM managers WHERE EXTRACT(YEAR FROM birth_date) < 1973;
⚠️ 注意:使用函数处理列值可能会导致该列的索引失效,如果birth_date有索引,优先选择第一种直接比较日期常量的写法,性能更优。
内容的提问来源于stack exchange,提问作者Colten Unger
相关产品推荐
相关产品推荐

