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


Show data in current day, week, month and year

我有表user,它包含id_userusernameuser_timeuser_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())