显示当前日,周,月和年的数据

And*_*.K. 8 php mysql

我有桌子user,它包含id_user,usernameuser_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(user_time)= YEAR(NOW())不推荐; 因为它需要全表扫描.尝试`EXPLAIN SELECT*FROM user WHERE YEAR(user_time)= YEAR(NOW())` (2认同)

Bar*_*mar 7

YEAR返回一个数字2014.那永远不会等于时间.您需要测试年份是否user_time与给定年份相同:

SELECT * FROM user
WHERE YEAR(user_time) = YEAR(NOW())
Run Code Online (Sandbox Code Playgroud)