카테고리 없음

[SQL 서버] SQL Server GROUP BY datetime은 시간 분을 무시하고 날짜 및 합계 값을 선택합니다.

행복을전해요 2020. 12. 20. 01:31
SELECT CAST(Datetimefield AS DATE) as DateField, SUM(intfield) as SumField
FROM MyTable
GROUP BY CAST(Datetimefield AS DATE)
-------------------

그가 사용하는 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)
-------------------

이 작업을 수행해야하는 옵션을 조사했지만 사용하는 방법이 가장 간단하다고 생각합니다.

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;
       
-------------------

-나는 이것을 데이터 유형으로 좋아하고 형식은 날짜 시간 데이터 유형과 일치합니다.

;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
                                
-------------------

개인적으로 나는 포맷 기능을 선호하므로 날짜 부분을 매우 쉽게 변경할 수 있습니다.

     declare @format varchar(100) = 'yyyy/MM/dd'
     select 
             format(the_date,@format), 
                     sum(myfield) 
                          from mytable 
                               group by format(the_date,@format) 
                                    order by format(the_date,@format) desc;
                                    


출처
https://stackoverflow.com/questions/7417017