У меня есть база данных, в которой хранятся пакеты некоторых клиентов и дата создания указанного пакета.
Мне нужно получить, сколько посылок делает клиент каждый день в течение месяца. я пробовал с
SELECT distinct fecha_creacion FROM paqueteria.paquetes
where remitente=73
and date(fecha_creacion) >= '2017-10-01'
and date(fecha_creacion) <='2017-10-30'
Проблема в том, что date_creation находится в формате даты и времени ГГГГ-ММ-ДД ЧЧ-ММ-СС, и с одного и того же дня я получаю несколько записей, но с разным временем
2017-10-02 13:57:34
2017-10-02 13:58:15
2017-10-03 14:58:32
Что вам нужно, так это использовать функцию
DATE_FORMAT
:Или функция
DATE
:Проверить его работу в этой версии можно онлайн ( с
DATE_FORMAT
и сDATE
).В обоих случаях я использовал псевдоним
fecha_creacion
, чтобы имя поля оставалось прежним, даже если его содержимое — это только год, месяц и день.Если вы хотите, чтобы он подсчитывал количество пакетов, вам следует использовать
GROUP BY
вместоDISTINCT
:Если вы хотите избежать
DATE(fecha_creacion)
этого, вам следует изменить псевдоним, чтобы избежать путаницы с именем поля (которое имеет приоритет):Обратите внимание, что запрос не оптимизирован, поскольку они не являются ни индексами,
fecha
ниDATE(fecha_creacion)
файлами .Я бы сделал это просто так:
доказательство концепции
VER DEMO
Результат:
Чтобы показать вам количество пакетов, я бы выполнил следующий запрос:
Я надеюсь, что это поможет вам. Ваше здоровье
Друг преобразует дату с помощью Cast следующим образом:
Я не пробовал, я написал это и ничего больше.