【发布时间】:2012-03-02 16:17:25
【问题描述】:
在我的 SQL 表中,我在 bday 列中有生日存储(例如)1987-02-31
我想要一个 SELECT 查询,它只选择年份,而忽略月份和日期,例如:
SELECT FROM users WHERE bday=1987
这可能与以这种方式存储的日期有关吗?
【问题讨论】:
在我的 SQL 表中,我在 bday 列中有生日存储(例如)1987-02-31
我想要一个 SELECT 查询,它只选择年份,而忽略月份和日期,例如:
SELECT FROM users WHERE bday=1987
这可能与以这种方式存储的日期有关吗?
【问题讨论】:
您可以简单地使用YEAR() MySQL function:
WHERE YEAR(bday)=1987
【讨论】:
BETWEEN '1987-01-01' AND '1987-12-31' 范围会不会更好?我认为对于范围,可以使用索引,但对于函数,不能使用索引。我想。
如果字段是 Date 数据类型,@soju 的答案是正确的,但是...
您明确表示您的数据库将它们存储为1987-02-31
对我来说,这表明您可能正在处理使用 varchar 或其他文本字段来存储日期的数据库。
如果是这种情况,您可以使用SUBSTRING 函数。
WHERE SUBSTRING(bday, 1,4) = '1987'
【讨论】:
SELECT FROM users WHERE bday LIKE '1987-%'
【讨论】:
对于 MySQL,如果您的 bday 是日期列(不是文本列),您可以像这样使用 year() 函数:
select * from users where year(bday)=1987;
【讨论】: