Programming

MySQL / SQL : 날짜 / 시간 열에서만 날짜별로 그룹화

procodes 2020. 5. 29. 23:10
반응형

MySQL / SQL : 날짜 / 시간 열에서만 날짜별로 그룹화


다음과 같은 열이있는 테이블이 있습니다 mydate DATETIME...

다음과 같은 쿼리가 있습니다.

SELECT SUM(foo), mydate FROM a_table GROUP BY a_table.mydate;

datetime시간과 분을 포함한 전체 그룹으로 묶습니다. 에 의해가 YYYY/MM/DD아닌 날짜까지만 그룹을 만들고 싶습니다 YYYY/MM/DD/HH/mm.

이 작업을 수행하는 방법을 아는 사람이 있습니까? 내 코드에서 동적으로 (atm처럼) 할 수는 있지만 휴지통 코드를 정리하고 있으며 SQL을 통해 만들 수 있습니다. 단지 :(.


날짜 시간을 날짜로 캐스트 한 후이 구문을 사용하여 GROUP BY를 사용하십시오.

SELECT SUM(foo), DATE(mydate) FROM a_table GROUP BY DATE(a_table.mydate);

또는 @ orlandu63이 제안한 것처럼 별칭으로 그룹화 할 수 있습니다.

SELECT SUM(foo), DATE(mydate) DateOnly FROM a_table GROUP BY DateOnly;

성능에 차이를 줄 것이라고 생각하지는 않지만 조금 더 명확합니다.


또는:

SELECT SUM(foo), DATE(mydate) mydate FROM a_table GROUP BY mydate;

더 효율적입니다 (제 생각에) 행당 두 번 mydate를 캐스팅 할 필요가 없기 때문입니다.


나는 월과 연도별로 그룹화해야하므로 위의 어느 것도 나를 위해 일하지 않았다는 것을 알았습니다. 대신 date_format을 사용했습니다.

SELECT date
FROM blog 
GROUP BY DATE_FORMAT(date, "%m-%y")
ORDER BY YEAR(date) DESC, MONTH(date) DESC 

SELECT SUM(No), HOUR(dateofissue) 
FROM tablename 
WHERE dateofissue>='2011-07-30' 
GROUP BY HOUR(dateofissue)

특정 요일부터 합계하여 시간을 제공합니다!

참고 URL : https://stackoverflow.com/questions/366603/mysql-sql-group-by-date-only-on-a-datetime-column

반응형