我有表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());
查询有效,但只返回一个空行。它不仅是年份,还有日,周和月返回空行。为什么这个查询没有返回任何数据?
答案 0 :(得分:10)
问题是你没有对你的数据做任何事情:
SELECT * FROM user WHERE user_time=YEAR(NOW())
尝试从YEAR
获取user_time
,就像这样,所以你要比较数字,而不是timestamp
和数字:
SELECT * FROM user WHERE YEAR(user_time) = YEAR(NOW())
或者,正如@ItsMe建议:
EXPLAIN SELECT * FROM user WHERE YEAR(user_time) = YEAR(NOW())
请尽量避免查询中的*
,这是一种不好的做法。
答案 1 :(得分:7)
YEAR
会返回2014
之类的数字。那永远不会等于时间。您需要测试user_time
的年份是否与给定年份相同:
SELECT * FROM user
WHERE YEAR(user_time) = YEAR(NOW())