任何人都可以使用年份帮助我从数据库表中获取总记录数吗?
我有一张桌子 - 我将考试日期保存在日期字段中。我需要使用仅年份从该表中获取总记录数。
我正在使用mysql。
这是我的表
| e_id | int(11) | NO | PRI | NULL | auto_increment |
| exam_name | varchar(50) | NO | | NULL | |
| exam_date | date | NO | | NULL | |
我需要在特定的一年内完成考试总数
答案 0 :(得分:1)
您可以在@ Brian的答案中使用DATE_FORMAT()
等函数,或使用YEAR()
这样的函数:
SELECT COUNT(*) as total
FROM table
WHERE YEAR(date_field) = 2011
但是,如果表的行数超过几千行,这种方法将不会很快,因为它必须完全扫描整个表并将该函数应用于表的所有记录。在任何情况下,最好是有一个类似@Ruslan的条件(如果它是DATETIME
字段)或者像这样的DATE
字段:
WHERE date_field BETWEEN '2011-01-01' AND '2011-12-31'
我更喜欢适用于(DATE或DATETIME)类型的条件:
WHERE date_field >= '2011-01-01'
AND date_field < '2012-01-01'
如果date_field
上有索引,则查询将使用索引进行计数而不扫描整个表格,并且速度会快很多倍。
答案 1 :(得分:0)
在MYSQL中,您可以执行以下操作:
BETWEEN '2010-05-31 00:00:00' AND '2010-06-06 23:59:59'
正如您想按年份查询一样,那就是:
BETWEEN '2005-01-01 00:00:00' AND '2011-11-31 23:59:59'
希望有所帮助;)
答案 2 :(得分:0)
我认为这就是你想要的?你的问题有点含糊不清。
SELECT COUNT(*) as 'total' FROM table WHERE DATE_FORMAT(date_field,'%Y') = '2011'
table
是您的表格的名称,date_field
是您的表格中存储日期的字段,然后您可以用您尝试搜索的任何年份替换2011。 / p>