728x90
설명
- MariaDB 에서는 STR_TO_DATE(str, format) 내장함수를 제공한다.
- str : string 형태의 입력값이다.
- format : format 형식의 string 입력값이다. ex) STR_TO_DATE('21:31:58', '%H:%i:%s')
- STR_TO_DATE 는 str 에 따라서 DATE, TIME 혹은 DATETIME 으로 반환하게 된다.
- 만약 str 을 시간, 날짜 형식의 값으로 입력하지 않게 되면 null 이나 syntax error 를 응답하게 된다.
사용 예시
특정 영상의 시간을 기록하는 테이블이 있다. 테이블에서는 videoLength 컬럼을 기록하고 있으며 그 형태는 'HH:mm:ss' 형태의 값이다. 테이블을 활용해서 영상의 총 시간에 대해 추출해보자.
CREATE TABLE `video` (
`id` INT(10) NOT NULL,
`videoLength` VARCHAR(20) NOT NULL DEFAULT '00:00:00' COLLATE 'utf8mb4_0900_ai_ci',
PRIMARY KEY (`id`) USING BTREE
)
접근
- videoLength 는 앞서 설명했던 STR_TO_DATE 를 사용하여 TIME 타입의 값으로 변환할 수 있다.
- TIME 으로 변환된 값을 TIME_TO_SEC 을 사용하여 `초`로 값을 추출할 수 있다.
- TIME_TO_SEC 에 대한 간단한 설명을 보고 오셔도 되고, 생각하신대로 동작하니 보지 않으셔도 괜찮습니다.
- 이렇게 추출된 값을 합하면 끝
해결
SELECT SUM(TIME_TO_SEC(STR_TO_DATE(videoLength, '%H:%i:%s'))) FROM video
특이사항
- COUNT 와 다르게 SUM 은 조건에 맞는 값이 없다면 null 을 반환한다.
- 따라서 NPE 이 발생하지 않게 코드를 고려하여 작성해야 하는게 좋다.
출처
728x90
'DB > MariaDB' 카테고리의 다른 글
[MariaDB] TIME_TO_SEC 내장함수를 사용해서 TIME 형식의 string 값을 초로 변경해보자 (0) | 2023.05.16 |
---|---|
[MariaDB] csv 형태로 저장된 필드를 조회하고 싶다면 사용하는 내장함수 FIND_IN_SET (0) | 2023.05.15 |