Подтвердить что ты не робот

SQL Server GROUP BY datetime игнорирует часовую минуту и ​​выбирает с датой и суммой

У меня есть таблица с двумя полями - datetime и int. Я хочу сделать группу на datetime только на дату, игнорирующую час и минуту. Оператор SELECT должен возвращать дату, которая сопоставляется с суммой int за один день.

4b9b3361

Ответ 1

SELECT CAST(Datetimefield AS DATE) as DateField, SUM(intfield) as SumField
FROM MyTable
GROUP BY CAST(Datetimefield AS DATE)

Ответ 2

Поскольку он не указывал, какую версию SQL-сервера он использует (тип date недоступен в 2005 году), можно также использовать

SELECT CONVERT(VARCHAR(10),date_column,112),SUM(num_col) AS summed
FROM table_name
GROUP BY CONVERT(VARCHAR(10),date_column,112)

Ответ 3

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

SELECT COUNT(*), 
       DATEADD(dd, DATEDIFF(dd, 0, date_field),0) as dtgroup 
FROM TABLE 
GROUP BY DATEADD(dd, DATEDIFF(dd, 0, date_field),0) 
ORDER BY dtgroup ASC;

Ответ 4

- Мне это нравится, поскольку тип данных и формат остаются совместимыми с типом данных даты

;with cte as(
    select 
        cast(utcdate as date) UtcDay, DATEPART(hour, utcdate) UtcHour, count(*) as Counts
    from dbo.mytable cd 
    where utcdate between '2014-01-14' and '2014-01-15'
    group by
        cast(utcdate as date), DATEPART(hour, utcdate)
)
select dateadd(hour, utchour, cast(utcday as datetime)) as UTCDateHour, Counts
from cte