【发布时间】:2017-04-19 11:39:40
【问题描述】:
如何显示当前年的所有周(52)
我做了这个查询:
SELECT
COALESCE(IF(DATE_FORMAT(q.date_add, '%Y-%u') IS NULL,
(DATE_FORMAT(q.date_add, '%Y-%u')),
DATE_FORMAT(q.date_add, '%Y WEEK %u'))) AS CurrentDate,
COALESCE(IF(SUM(q.totalExcl) IS NULL,
0,
SUM(q.totalExcl))) AS total
FROM
expoled.ps_oxoquotation_quotationstate_history h
RIGHT JOIN
expoled.ps_oxoquotation_quotation q ON h.idQuotation = q.idQuotation
LEFT JOIN
expoled.ps_employee e ON h.idEmployee = e.id_employee
INNER JOIN
expoled.ps_sv_employee_meta m ON h.idEmployee = m.id_employee
WHERE
h.idEmployee = 39
AND YEAR(q.date_add) = YEAR(UTC_TIMESTAMP())
AND h.idQuotationState = 3
GROUP BY IFNULL(CurrentDate, '')
我想我需要在这里做点什么:
SELECT
IFNULL(DATE_FORMAT(q.date_add, '%Y WEEK %u'), 0) AS CurrentDate,
IFNULL(SUM(q.totalExcl),0) AS total
FROM
我尝试输入 IFNULL,但结果相同
这就是我现在得到的:
它显示从第 5 周到第 16 周的当前周数。 第 1 周到第 4 周也没有任何数据,因为其中没有数据。它只需要显示一个简单的零 (0)
所以我想要的是它需要从第 1 周到第 52 周显示标准,如果没有数据只有 0
查询现在正在运行,没有任何错误。
【问题讨论】:
-
周总是很有趣的。你说的是哪几个星期?既然你说的是 52,我假设你的意思是 ISO 周?
-
是 ISO 周整整 52 周
-
IFNULL(DATE_FORMAT(q.date_add, '%Y WEEK %u')) , 0) 使用这个
-
它给了我相同的结果 IFNULL(DATE_FORMAT(q.date_add, '%Y WEEK %u'), 0) AS CurrentDate, IFNULL(SUM(q.totalExcl),0) AS total
-
与您的问题没有直接关系,但 ISO 周数最多为 53,而不是 52。MySQL has a week() function。