【问题标题】:Show data in current day, week, month and year显示当前日、周、月和年的数据
【发布时间】:2014-12-29 09:10:18
【问题描述】:

我有表user,它包含id_userusernameuser_time。而user_time是用户注册的时间,属性是timestamp所以输出是这样的:

User A | user_time > 2014-12-22 10:10:10

然后我使用这个查询来显示每年的数据

SELECT * FROM user WHERE user_time = YEAR(NOW());

查询有效,但只返回一个空行。不仅是年,而且日、周和月都返回空行。为什么这个查询没有返回任何数据?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    问题是您没有对数据做任何事情:

    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())
    

    请避免在查询中使用*,这是一种不好的做法。

    【讨论】:

    • @Andhika 如果您觉得有用,可以接受答案:)
    • YEAR(user_time) = YEAR(NOW()) 不推荐;因为它需要全表扫描。试试EXPLAIN SELECT * FROM user WHERE YEAR(user_time) = YEAR(NOW())
    【解决方案2】:

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

    SELECT * FROM user
    WHERE YEAR(user_time) = YEAR(NOW())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多