我正在尝试使用mysql中的date()函数,仅使用datetime格式中的日期来创建基于星期几的订单总数的案例。但是,当我运行此查询时,每个案例的值都为“0”。
select
(CASE datetime WHEN date(datetime) = '2020-06-22' THEN count(order_id) ELSE 0 END) AS 'Mon'
,(CASE datetime WHEN date(datetime) = '2020-06-23' THEN count(order_id) ELSE 0 END) AS 'Tue'
,(CASE datetime WHEN date(datetime) = '2020-06-24' THEN count(order_id) ELSE 0 END) AS 'Wed'
,(CASE datetime WHEN date(datetime) = '2020-06-25' THEN count(order_id) ELSE 0 END) AS 'Thu'
,(CASE datetime WHEN date(datetime) = '2020-06-26' THEN count(order_id) ELSE 0 END) AS 'Fri'
from table;
当我运行下面的查询时,我确认了我确实获得了一个特定日期的所需输出。
select count(order_id)
from table
where date(datetime) = '2020-06-22';
2条答案
按热度按时间hgncfbus1#
按以下方式发送查询:
你可以使用
如果你想得到一系列的日期
c9qzyr3d2#
mysql有一个很好的特性,将布尔值视为数字,1表示真,0表示假。所以你可以把逻辑表达为:
或:
您的查询无法工作,因为它是聚合查询(
COUNT()
)但是你的文章中有未汇总的专栏SELECT
. mysql应该会返回一个解析错误——最新版本会返回。我还强烈建议您不要使用单引号来分隔列。原因有三:
你的列名很好,不需要转义。
单引号只能用于字符串和日期常量。
如果确实需要转义标识符,可以使用反记号。