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