按 MONTH 对日期进行分组时如何将月份从 INT 转换为 VARCHAR
How to Convert a Month from INT to VARCHAR when grouping the date by MONTH
我需要以可读的方式总结所有年份每个月的采访次数。
SELECT month(i.Date) AS Month, Year(i.Date) AS Year, Count(i.Id) AS' Number of Interviews'
FROM Interviews i
GROUP BY month(i.Date), year(i.Date)
ORDER BY year(i.Date) DESC, month(Date) ASC
我希望查询 return 月作为 VARCHAR,如 'January' 而不是来自 'month' 函数的默认 INT。
适用于大多数 DBMS 的解决方案是 CASE
表达式。
SELECT CASE month(i.date)
WHEN 1 THEN
'January'
...
WHEN 12 THEN
'December'
END month,
year(i.date) year,
count(i.id) number_of_interviews
FROM interviews i
GROUP BY month(i.date),
year(i.date)
ORDER BY year(i.date) DESC,
month(i.date) ASC;
对于MySql,它将是:
SELECT
monthname(i.Date) AS Month,
Year(i.Date) AS Year,
Count(i.Id) AS `Number of Interviews`
FROM Interviews i
GROUP BY month(i.Date), monthname(i.Date), year(i.Date)
ORDER BY year(i.Date) DESC, month(i.Date) ASC
对于SQL 服务器:
SELECT
datename(month, i.date) AS Month,
Year(i.Date) AS Year,
Count(i.Id) AS [Number of Interviews]
FROM Interviews i
GROUP BY month(i.Date), datename(month, i.date), year(i.Date)
ORDER BY year(i.Date) DESC, month(i.Date) ASC
SELECT count(1), format(dateColumn, 'yyyy-MM')
FROM tableName
GROUP BY format(dateColumn, 'yyyy-MM')
ORDER BY 2
我需要以可读的方式总结所有年份每个月的采访次数。
SELECT month(i.Date) AS Month, Year(i.Date) AS Year, Count(i.Id) AS' Number of Interviews'
FROM Interviews i
GROUP BY month(i.Date), year(i.Date)
ORDER BY year(i.Date) DESC, month(Date) ASC
我希望查询 return 月作为 VARCHAR,如 'January' 而不是来自 'month' 函数的默认 INT。
适用于大多数 DBMS 的解决方案是 CASE
表达式。
SELECT CASE month(i.date)
WHEN 1 THEN
'January'
...
WHEN 12 THEN
'December'
END month,
year(i.date) year,
count(i.id) number_of_interviews
FROM interviews i
GROUP BY month(i.date),
year(i.date)
ORDER BY year(i.date) DESC,
month(i.date) ASC;
对于MySql,它将是:
SELECT
monthname(i.Date) AS Month,
Year(i.Date) AS Year,
Count(i.Id) AS `Number of Interviews`
FROM Interviews i
GROUP BY month(i.Date), monthname(i.Date), year(i.Date)
ORDER BY year(i.Date) DESC, month(i.Date) ASC
对于SQL 服务器:
SELECT
datename(month, i.date) AS Month,
Year(i.Date) AS Year,
Count(i.Id) AS [Number of Interviews]
FROM Interviews i
GROUP BY month(i.Date), datename(month, i.date), year(i.Date)
ORDER BY year(i.Date) DESC, month(i.Date) ASC
SELECT count(1), format(dateColumn, 'yyyy-MM')
FROM tableName
GROUP BY format(dateColumn, 'yyyy-MM')
ORDER BY 2