Как посчитать количество дней, месяцев, годов, имея даты в таблице mysql

Есть таблица

| id | date | price |

Даты бывают разные:

2022-08-16 18:03:04
2022-08-16 18:08:03
2022-08-10 13:25:39
2022-08-20 13:39:25

Я не могу найти как их посчитать.

Нужно:

  1. Дней - 3
  2. Месяцев 1
  3. Годов - 1

Я просто не могу ни чего придумать, а в интернете только о том как получить между датами количество дней. Помогите пожалуйста!


Ответы (2 шт):

Автор решения: Hopeyer

Смог после некого размышления. Не знаю хорошо ли получилось, но у меня как я хотел, так и работает.

SELECT count(DISTINCT DAY(date)) as date FROM table

Я просто не учитывал дубликаты, поэтому count считал все мои дубликаты дат. Но вот минус в том что, если года, месяца, разные, а дни одинаковые, то они их засчитывать не будут а удаляться как дубликаты.

Я только что попробовал использовать так:

SELECT count(DISTINCT DATE_FORMAT(date, '%Y-%m-%d')) as date FROM table

Теперь учитывается полная дата. Больше ни как не смог придумать

→ Ссылка
Автор решения: Аня Евстифейкина

Попробуйте функцию EXTRACT(part FROM date) аргумент part заменяется на YEAR и MONTH. Можно вывести для записей года, месяца, дни. Оконкой посчитать года, месяца, дни, т.к. группировка схлопнет дубли и нормально посчитает.

Можно дату в строку преобразовать, порезать на 3 варианта (год, год+мес, год+мес+день), сгруппировать и посчитать.

→ Ссылка