mysql 시간 질문입니다. 조언 부탁드립니다. 0 5 1,095

by Atreyu [MySQL] [2019.10.02 16:30:46]


안녕하세요. 

하다가  도저히 안되겠고 자료도 찾지를 못해서 질문 드립니다.

MIN_DT = 2019-10-01 11:52

MAX_DT = 2019-10-01 16:52

이런식의 데이터가 있다고 할 때 이 데이터를

2019-10-01 11:50

2019-10-01 11:55

2019-10-01 12:00

.

.

.

2019-10-01 16:50

2019-10-01 16:55

이런식으로 출력하고 싶습니다.

생각한 방법은 위 두 시간을 1분 단위로 출력한 다음 5분단위로 그룹핑 하는 방법인데요.

1분별로 출력하는 부분도 막혀서 도움을 부탁드립니다ㅠㅠ

감사합니다.

by 마농 [2019.10.02 17:55:24]

해당 컬럼의 자료형이 뭔가요? 문자형(varchar)? 날짜형(datetime)?
MySQL 버전이 어떻게 되나요?


by Atreyu [2019.10.05 20:26:50]

답변이 늦어서 정말 죄송합니다. 

확인이 너무 늦어진 것 같습니다.

해당 컬럼의 자료형은 datetime형으로 되어있고 DB는 정확히는 MariaDB 입니다.

 


by 마농 [2019.10.07 09:28:37]

MariaDB 버전이 어떻게 되나요?


by 마농 [2019.10.07 09:48:06]
WITH t AS
(
SELECT '2019-10-01 11:52' min_dt, '2019-10-01 16:52' max_dt
)
SELECT s + INTERVAL (seq - 1) * 5 MINUTE x
  FROM (SELECT DATE_FORMAT(min_dt, '%Y-%m-%d %H') + INTERVAL FLOOR(MINUTE(min_dt) / 5) * 5 MINUTE s
             , DATE_FORMAT(max_dt, '%Y-%m-%d %H') + INTERVAL  CEIL(MINUTE(max_dt) / 5) * 5 MINUTE e
          FROM t
        ) a
      , seq_1_to_999 b
 WHERE b.seq <= TIME_TO_SEC(TIMEDIFF(a.e, a.s)) / 60 / 5 + 1
;

 


by Atreyu [2019.10.07 12:46:55]

헉.. 혹시나 다른분들 참고가 필요할 몰라 남깁니다.

MariaDB 버전은 2.4.1 버전입니다.

DB 툴 상에서는 with절이 계속 에러로 나오길래 사용이 안되는 줄 알았는데 사용이 되는군요!

처음 보는 함수들도 많은 것 같습니다!

감사합니다. 하나씩 천천히 뜯어보면서 공부해보겠습니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입