Мы делаем тоннаж этого месяца группировки.Я использую это выражение для усечения произвольных временных отметок до временных отметок, представляющих первое число месяца.
TIMESTAMP(DATE_FORMAT(action_time,'%Y-%m-01'))
Это делает то же самое, что и Oracle-ism TRUNC(action_time,'MM')
Например, вы могли быdo
SELECT COUNT(*) NUM, TIMESTAMP(DATE_FORMAT(t.action_time,'%Y-%m-01')) MONTH
FROM TABLE t
GROUP BY TIMESTAMP(DATE_FORMAT(t.action_time,'%Y-%m-01'))
Это имеет концептуальное преимущество, заключающееся в том, что он сохраняет временную метку усеченных за месяц данных, поэтому, если вам нужно, вы все равно можете вычислять разницу во времени и делать другие своевременные и своевременные действия, если вам это необходимо.
Как указывал Раверн, есть небольшое снижение производительности (но это не плохо!).Некоторые из наших столбцов таблицы загружаются с помощью этой функции, поэтому они уже усечены по месяцам.