sggnology
하늘속에서IT
sggnology
전체 방문자
오늘
어제
  • 분류 전체보기 (83)
    • Algorithm (31)
      • Programmers (27)
      • Baekjoon (4)
    • WIKI (4)
      • VirtualBox (1)
      • Power Toys (1)
    • NodeJS (4)
      • nvm (1)
      • React (1)
      • Vue (1)
    • Dev Language (3)
      • Java (2)
      • Kotlin (1)
    • Spring Boot (17)
      • Gradle (1)
      • JPA (3)
    • DB (4)
      • MariaDB (3)
      • Redis (0)
    • Android (6)
      • Debug (3)
    • Nginx (3)
      • Debug (1)
    • Intellij (0)
    • Network (1)
    • Git (2)
      • GitHub (2)
    • Chrome Extension (0)
    • ETC (5)
      • Monitoring (2)
    • Linux (1)
      • WSL (1)
    • Visual Studio (1)
    • Side Project (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 고득점 Kit
  • JPA
  • 안드로이드 스튜디오
  • 백준
  • 고득점KIT
  • 알고리즘
  • Android Studio
  • spring boot
  • 티스토리챌린지
  • kotlin
  • DB
  • 연습문제
  • docker
  • 레벨3
  • mariadb
  • 오블완
  • 프로그래머스
  • 레벨2
  • java
  • nginx

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
sggnology

하늘속에서IT

[MariaDB] STR_TO_DATE 내장함수를 사용해서 string 을 DATETIME 으로 변환하자.(feat. 사용예시)
DB/MariaDB

[MariaDB] STR_TO_DATE 내장함수를 사용해서 string 을 DATETIME 으로 변환하자.(feat. 사용예시)

2023. 5. 16. 21:46
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 에 대한 간단한 설명을 보고 오셔도 되고, 생각하신대로 동작하니 보지 않으셔도 괜찮습니다.
  • 이렇게 추출된 값을 합하면 끝
 

[MariaDB] TIME_TO_SEC 내장함수를 사용해서 TIME 형식의 string 값을 초로 변경해보자

설명 MariaDB 는 TIME_TO_SEC(time) 내장함수를 제공한다. time : TIME 형식의 값을 의미한다. ex) TIME_TO_SEC('21:48:24') MariaDB 버전에 따라 다른 타입의 값을 반환한다. 5.3 78644 출처 TIME_TO_SEC Returns the time argument,

atsky.tistory.com

 

해결

SELECT SUM(TIME_TO_SEC(STR_TO_DATE(videoLength, '%H:%i:%s'))) FROM video

 

특이사항

  • COUNT 와 다르게 SUM 은 조건에 맞는 값이 없다면 null 을 반환한다.
  • 따라서 NPE 이 발생하지 않게 코드를 고려하여 작성해야 하는게 좋다.

출처

 

STR_TO_DATE

Converts a string to date.

mariadb.com

 

728x90

'DB > MariaDB' 카테고리의 다른 글

[MariaDB] TIME_TO_SEC 내장함수를 사용해서 TIME 형식의 string 값을 초로 변경해보자  (0) 2023.05.16
[MariaDB] csv 형태로 저장된 필드를 조회하고 싶다면 사용하는 내장함수 FIND_IN_SET  (0) 2023.05.15
    'DB/MariaDB' 카테고리의 다른 글
    • [MariaDB] TIME_TO_SEC 내장함수를 사용해서 TIME 형식의 string 값을 초로 변경해보자
    • [MariaDB] csv 형태로 저장된 필드를 조회하고 싶다면 사용하는 내장함수 FIND_IN_SET
    sggnology
    sggnology
    하늘은 파란색이니까 내 삶도 파란색이길 ㅎㅎ

    티스토리툴바