我有表user
,它包含id_user
,username
和user_time
。user_time
是用户注册的时间,属性是timestamp
的,因此输出如下所示:
User A | user_time > 2014-12-22 10:10:10
然后我使用此查询显示每年的数据
SELECT * FROM user WHERE user_time = YEAR(NOW());
查询有效,但只返回一个空行。它不仅是年份,而且是日、周和月返回空行。为什么此查询不返回任何数据?
问题是你没有对你的数据做任何事情:
SELECT * FROM user WHERE user_time=YEAR(NOW())
尝试从user_time
中获取YEAR
,就像这样,所以你确实比较数字,而不是timestamp
和一个数字:
SELECT * FROM user WHERE YEAR(user_time) = YEAR(NOW())
或者,正如@ItsMe所建议的:
EXPLAIN SELECT * FROM user WHERE YEAR(user_time) = YEAR(NOW())
请避免查询中的*
,这是一种不好的做法。
>YEAR
返回一个数字,如2014
。这永远不会等于一个时代。您需要测试user_time
年份是否与给定年份相同:
SELECT * FROM user
WHERE YEAR(user_time) = YEAR(NOW())