MySQL如何在datetime字段中匹配一个年份?

10

我想知道是否有可能实现以下功能:在我的数据库表中,我有一个日期时间字段,我想要查询该表,并获取所有发布日期为2011年的行。但是,我的日期发布列是dateTime类型,因此形式如下:

2011-06-12 00:00:00

我该如何查询该表以返回所有2011年的行?

4个回答

24
SELECT * FROM yourtable WHERE YEAR(datetime_column) = '2011' 

了解更多关于 YEAR() 的信息


YEAR() 函数接受 date 类型的参数,而不是 datetime。或者我错了吗? - hsz

4
它也应该与datetime类型一起使用。
SELECT * FROM tblName WHERE YEAR(column) = '2011' 

3

尝试使用以下方法:

SELECT *
  FROM your_table
 WHERE EXTRACT(YEAR FROM datetime_column) = '2011'

1

如果你想的话,甚至可以对其进行子字符串操作...

SELECT * FROM tblName WHERE substr(column,1,4) = '2011' 

我建议创建一个“日期维度”表,然后将您的dateTime字段拆分为单独的日期和时间字段,并通过日期字段连接到“日期维度”表,这样可以实现更好的功能。有关使用“日期维度”表的更多信息,请参见我在以下帖子中发布的答案。

选择给定日期范围内的所有月份,包括值为0的月份

您可以按以下方式将您的表连接到它上:

SELECT tblName.*
FROM tblName
INNER JOIN dimDates AS dd
    ON tblName.dateField = dd.dd_date
    AND dd.dd_date = "2011"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接