【发布时间】:2014-05-28 15:51:43
【问题描述】:
您好,我正在尝试获取某些月份的记录。例如对于这个查询,我希望用户看到当前月份是“五月”,而过去一个月是“四月”。从那时起,我不希望我的查询在任何其他月份运行。我被这个查询困住了,无法弄清楚。基本上我需要一个函数在我的查询中自动知道这个月和前 1 个月来显示记录。谢谢
DECLARE @Year int
set @Year = 2014
SELECT d.name, a.dealer_code, b.last_name, b.city, b.state, b.phone
, COUNT(CASE WHEN MONTH(c.Funded_date) = 1 THEN 1 ELSE NULL END) January
, COUNT(CASE WHEN MONTH(c.Funded_date) = 2 THEN 1 ELSE NULL END) Feburary
, COUNT(CASE WHEN MONTH(c.Funded_date) = 3 THEN 1 ELSE NULL END) March
, COUNT(CASE WHEN MONTH(c.Funded_date) = 4 THEN 1 ELSE NULL END) April
, COUNT(CASE WHEN MONTH(c.Funded_date) = 5 THEN 1 ELSE NULL END) May
, COUNT(CASE WHEN MONTH(c.Funded_date) = 6 THEN 1 ELSE NULL END) June
, COUNT(CASE WHEN MONTH(c.Funded_date) = 7 THEN 1 ELSE NULL END) July
, COUNT(CASE WHEN MONTH(c.Funded_date) = 8 THEN 1 ELSE NULL END) August
, COUNT(CASE WHEN MONTH(c.Funded_date) = 9 THEN 1 ELSE NULL END) September
, COUNT(CASE WHEN MONTH(c.Funded_date) = 10 THEN 1 ELSE NULL END) October
, COUNT(CASE WHEN MONTH(c.Funded_date) = 11 THEN 1 ELSE NULL END) November
, COUNT(CASE WHEN MONTH(c.Funded_date) = 12 THEN 1 ELSE NULL END) December
, COUNT(*) 'Year to Date'
FROM tdealer a
JOIN tContact b ON a.contact_id = b.contact_id
JOIN tContract c ON a.dealer_id = c.dealer_id
JOIN tCompany d ON c.company_id = d.company_id
where YEAR (c.Funded_date) = @Year
GROUP BY d.name, a.dealer_code, b.last_name, b.city, b.state, b.phone
【问题讨论】:
-
使用 %M 参数检查 DATE_FORMAT!
-
date and time functions of MySQL 可以为您提供当前月份,当然您可以减去一个月并得到最后一个。你被困在哪里了?
-
您应该能够在查询中使用
WHERE DATE_FORMAT(c.Funded_date, '%Y%m') BETWEEN DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 MONTH), '%Y%m') AND DATE_FORMAT(NOW(), '%Y%m')之类的内容来获取当前和上个月的详细信息。
标签: mysql add time-series