MySQL查询根据年/月/日获取记录列表

时间:2013-06-20 11:13:09

标签: mysql sql

我正在尝试编写一个查询来获取数据库中记录的计数,这些记录发生在表中的特定日期。我的查询如下:

SELECT
  count(id),
  A.status,
  YEAR(A.dateRequested),
  MONTHNAME(A.dateRequested),
  WEEK(A.dateRequested),
  DAYNAME(A.dateRequested)
FROM ASSESSMENT A where A.status = 'Pending';

它给我的只是一条记录:

50  Pending 2013    April   16  Monday

为什么它没有给我列出所有记录。对于例如我周一插入了50条记录,星期二有20条记录等等。我怎样才能得到这样的清单?为什么函数WEEK(A.dateRequested)返回16,因为一个月有4周?

3 个答案:

答案 0 :(得分:2)

您使用的count(id)没有group by。 MySQL的工作方式是将其转换为空group by。您将获得整个表的count(id),其他字段将设置为一个随机行。

按工作日列出待处理记录的数量:

SELECT  DAYNAME(A.dateRequested)
,       count(id),
FROM    ASSESSMENT A 
where   A.status = 'Pending'
group by
        DAYNAME(A.dateRequested)

答案 1 :(得分:0)

  1. 第16周是一年中的一周,而不是该月的一周。
  2. 您的查询不是查询今天发生的事情。它正在寻找具有待处理状态的物品。将其更改为:

    WHERE A.dateRequested ='2013-06-20'

  3. 您正在使用COUNT函数,除非您使用GROUP BY,否则只返回一个结果。

答案 2 :(得分:0)

试试这个: -

SELECT
  count(id),
  A.status,
  YEAR(A.dateRequested),
  MONTHNAME(A.dateRequested),
  WEEK(A.dateRequested),
  DAYNAME(A.dateRequested)
FROM ASSESSMENT A where A.status = 'Pending'
GROUP BY A.status,
  YEAR(A.dateRequested),
  MONTHNAME(A.dateRequested),
  WEEK(A.dateRequested),
  DAYNAME(A.dateRequested)