Php 如何在mysql中选择星期一到星期天?
我尝试选择查询的日期,但我也希望在sql的日期上获得例如星期天甚至没有星期天。星期天是零 这里是mysqlPhp 如何在mysql中选择星期一到星期天?,php,sql,mysqli,pdo,Php,Sql,Mysqli,Pdo,我尝试选择查询的日期,但我也希望在sql的日期上获得例如星期天甚至没有星期天。星期天是零 这里是mysql SELECT DATE(log_date) DATE, COUNT(users) active_users, DATE_FORMAT(log_date,'%a') DAYNAME FROM tbl_accounts WHERE DATE(log_date) BETWEEN DATE(:now) - INTERVAL 1 WEEK AND DATE(:now)
SELECT
DATE(log_date) DATE,
COUNT(users) active_users,
DATE_FORMAT(log_date,'%a') DAYNAME
FROM tbl_accounts
WHERE
DATE(log_date) BETWEEN DATE(:now) - INTERVAL 1 WEEK AND DATE(:now)
GROUP BY DATE(log_date);
我要做的是选择周一到周日,即使没有周日,我仍然要选择moday,如果为空,它将显示零值?可能吗
样本输出:
我希望此输出变为周一-周日,如果没有周日,周日将显示为零。您的意思是这样吗
SELECT t.DATE, IFNULL(t.active_users, 0) AS active_users, week.d
FROM (
SELECT DATE(log_date) DATE,
COUNT(users) active_users,
DATE_FORMAT(log_date,'%a') DAYNAME
FROM tbl_accounts
WHERE DATE(log_date) BETWEEN DATE(NOW()) - INTERVAL 1 WEEK AND DATE(NOW())
GROUP BY DATE(log_date)) AS t
RIGHT OUTER JOIN (
SELECT 'Sun' AS d
UNION SELECT 'Mon' AS d
UNION SELECT 'Tue' AS d
UNION SELECT 'Wed' AS d
UNION SELECT 'Thu' AS d
UNION SELECT 'Fri' AS d
UNION SELECT 'Sat' AS d
) AS week ON week.d = t.DAYNAME
MySQL中的示例结果如下图所示:
选择
日期(日志日期)日期,
统计(用户)活动用户数,
日期格式(日志日期,'%a')DAYNAME
来自tbl_账户
哪里
日期(:now)-间隔1周到日期(:now)之间的日期(日志日期),以及
DATENAME(dw,@date)‘星期一’
按日期分组(记录日期);
只需将其添加到clouse所在的位置即可将其排除<代码>日期名称(dw,@date)‘星期一’
这是内置函数MSSQL。我认为示例数据和所需结果将非常有用。这里的一个选项是将日历表左键连接到当前查询。这将包括日历表中出现的任何日期。因此,我应该有日历表?因此,这很简单,您需要为一周中的每一天进行选择,并将其插入临时表,然后查询临时表。提供了示例输出
SELECT
DATE(log_date) DATE,
COUNT(users) active_users,
DATE_FORMAT(log_date,'%a') DAYNAME
FROM tbl_accounts
WHERE
DATE(log_date) BETWEEN DATE(:now) - INTERVAL 1 WEEK AND DATE(:now)and
DATENAME(dw , @date) <> 'Monday'
GROUP BY DATE(log_date);