У мене є купа замовлень продуктів, і я намагаюся групуватись за датою та підсумовувати кількість на цю дату. Як я можу групуватись за місяцем / днем / роком, не беручи до уваги частину часу?
3/8/2010 7:42:00
слід згрупувати 3/8/2010 4:15:00
У мене є купа замовлень продуктів, і я намагаюся групуватись за датою та підсумовувати кількість на цю дату. Як я можу групуватись за місяцем / днем / роком, не беручи до уваги частину часу?
3/8/2010 7:42:00
слід згрупувати 3/8/2010 4:15:00
Відповіді:
Віддайте / конвертуйте значення у Date
тип для вашої групи.
GROUP BY CAST(myDateTime AS DATE)
DateTime.Date
.
DateTime.Date
- Entity Framework:EntityFunctions.TruncateTime(myDateTime)
GROUP BY DATEADD(day, DATEDIFF(day, 0, MyDateTimeColumn), 0)
Або в SQL Server 2008 і далі ви можете просто передати так, Date
як @Oded запропонував:
GROUP BY CAST(orderDate AS DATE)
У попередньому кварталі 2008 р. Виймаючи частину дати:
GROUP BY CONVERT(CHAR(8),DateTimeColumn,10)
GROUP BY DATE(date_time_column)
Ось приклад, який я використовував, коли мені потрібно було порахувати кількість записів на певну дату без часового проміжку:
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');
Я вважаю, що вам потрібно згрупуватися за цим днем місяця року. так чому б не використовувати функції TRUNK_DATE. Спосіб його роботи описаний нижче:
Group By DATE_TRUNC('day' , 'occurred_at_time')