Ответ 1
Ввести/преобразовать значения в Date
для вашей группы.
GROUP BY CAST(myDateTime AS DATE)
У меня есть куча заказов на продукт, и я пытаюсь группировать их по дате и суммировать количество для этой даты. Как я могу группировать по месяцу/дню/году, не принимая во внимание временную часть?
3/8/2010 7:42:00
следует сгруппировать с помощью 3/8/2010 4:15:00
Ввести/преобразовать значения в Date
для вашей группы.
GROUP BY CAST(myDateTime AS DATE)
GROUP BY DATEADD(day, DATEDIFF(day, 0, MyDateTimeColumn), 0)
Или в SQL Server 2008, вы можете просто перевести на Date
, как предлагалось @Oded:
GROUP BY CAST(orderDate AS DATE)
В pre Sql 2008 Выбирая часть даты:
GROUP BY CONVERT(CHAR(8),DateTimeColumn,10)
Вот пример, который я использовал, когда мне нужно было подсчитать количество записей для конкретной даты без временной части:
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)
Вот пример, который отлично работает в oracle
select to_char(columnname, 'DD/MON/yyyy'), count(*) from table_name group by to_char(createddate, 'DD/MON/yyyy');