【问题标题】:Get year of current year获取当年的年份
【发布时间】:2021-04-04 13:38:54
【问题描述】:
SELECT DISTINCT(toda) toda, count(DISTINCT toda) as numusers 
FROM tbl_complains WHERE YEAR(dates)= YEAR(NOW()) 
GROUP BY toda ORDER BY toda

我试图只获取今年的数据,但我的“WHERE CLAUSE”似乎有问题。但是,当我在 where 子句中输入特定年份时,它就起作用了。除 where 子句外,一切正常。

希望大家能帮帮我。

【问题讨论】:

  • 什么是DISTINCT(toda)? DISTINCT 不是一个函数,删除它。 WHERE YEAR(dates)= YEAR(NOW()) 是正确的。
  • 你能举个例子说明它在哪里不起作用。
  • 一切正常,除了我的 where 子句。当我执行 WHERE YEAR(dates) = 2021 时,它会起作用。但是 =YEAR(NOW()) 它什么也没显示。
  • 顺便说一句,=YEAR(NOW()) 在我的其他查询中有效。这是唯一的问题。

标签: mysql date fetch


【解决方案1】:

在字段的 where 类中计算一些东西是一个非常糟糕的主意。 MySQL 必须对每一行进行计算,以查看结果是否使用 ROW。 这会进行全表扫描,可能会很慢

更好的使用

SELECT DISTINCT(toda) toda, count(DISTINCT toda) as numusers 
FROM tbl_complains 
WHERE dates BETWEEN DATE_FORMAT(NOW() ,'%Y-01-01') 
                AND DATE_FORMAT(NOW() ,'%Y-12-31'))
GROUP BY toda ORDER BY toda;

所以 MySQL 必须只计算一次日期,如果有也可以使用索引

【讨论】:

  • '我的“WHERE CLAUSE”似乎有问题。' - 你猜问题是性能?足够公平,因为 op 没有说...
猜你喜欢
  • 2017-02-21
  • 1970-01-01
  • 2011-08-25
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 2020-10-07
  • 1970-01-01
相关资源
最近更新 更多