Как я могу сгруппировать по столбцу даты и времени, не принимая во внимание время - PullRequest
185 голосов
/ 19 мая 2011

У меня есть несколько заказов на продукты, и я пытаюсь сгруппировать по дате и суммировать количество за эту дату. Как я могу сгруппировать по месяцу / дню / году без учета временной части?

3/8/2010 7:42:00 следует сгруппировать с 3/8/2010 4:15:00

Ответы [ 6 ]

322 голосов
/ 19 мая 2011

Приведение / преобразование значений в тип Date для вашей группы по.

GROUP BY CAST(myDateTime AS DATE)
24 голосов
/ 19 мая 2011
GROUP BY DATEADD(day, DATEDIFF(day, 0, MyDateTimeColumn), 0)

Или в SQL Server 2008 и далее вы можете просто привести к Date, как предложено @Oded:

GROUP BY CAST(orderDate AS DATE)
16 голосов
/ 19 мая 2011

В предварительном Sql 2008, вынимая часть даты:

GROUP BY CONVERT(CHAR(8),DateTimeColumn,10)
5 голосов
/ 02 июля 2018

GROUP BY DATE(date_time_column)

2 голосов
/ 07 января 2014

Вот пример, который я использовал, когда мне нужно было подсчитать количество записей на определенную дату без временной части:

select count(convert(CHAR(10), dtcreatedate, 103) ),convert(char(10), dtcreatedate, 103)
FROM dbo.tbltobecounted
GROUP BY CONVERT(CHAR(10),dtcreatedate,103)
ORDER BY CONVERT(CHAR(10),dtcreatedate,103)
0 голосов
/ 04 июля 2017

Вот пример отлично работает в оракуле

select to_char(columnname, 'DD/MON/yyyy'), count(*) from table_name group by to_char(createddate, 'DD/MON/yyyy');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...