ORACLE, MYSQL 날짜에서 각 값들을 추출하기 🧐

2021. 1. 7. 12:43· Backend/DataBase
목차
  1. 서론
  2. MySQL
  3. 연도 추출 - YEAR(컬럼명)
  4. 월 추출 - MONTH(컬럼명)
  5. 일 추출 - DAY(컬럼명) == DATOFMONTH(컬럼명)
  6. 시간 추출 - HOUR(컬럼명)
  7. 분 추출 - MINUTE(컬럼명)
  8. 초 추출 - SECOND(컬럼명)
  9. ORACLE
  10. 연도 추출 - EXTRACT(YEAR FROM 컬럼명)
  11. 월 추출 - EXTRACT(MONTH FROM 컬럼명)
  12. 일 추출 - EXTRACT(DAY FROM 컬럼명)
  13. 시간 추출 - EXTRACT(HOUR FROM 컬럼명)
  14. 분 추출 - EXTRACT(MINUTE FROM 컬럼명)
  15. 초 추출 - EXTRACT(MINUTE FROM 컬럼명)
728x90

ORACLE, MYSQL 날짜에서 각 값들을 추출하기 🧐

서론

  • 프로그래머스의 입양 시간 구하기(1) 문제로 DATETIME 컬럼의 값에서 시간만 추출해서 데이터를 처리해야 하는 문제였습니다.
  • 이 문제를 풀려면 DATETIME의 값을 시간을 추출하는 방법을 알아야 했으며, 이번 기회에 전체적으로 한번 알아보자고 느꼈습니다.
  • 근데 큰 문제는 ORACLE과 MYSQL과 추출방법이 다르다는 점입니다.
  • 아래에서 각자 살펴보도록 하겠습니다.
  • 모든 테스트는 저 위의 프로그래머스 문제를 기준으로 합니다.(프로그래머스 문제를 직접 실행해 값을 살펴보도록 하겠습니다.
  • 아래의 사진처럼 데이터가 있습니다.(아래 사진보다 더 많은 데이터가 있습니다.)

datetime-extract-each-value-1

  • 보기 편하도록 GROUP BY, ORDER BY를 사용합니다.

MySQL

  • 개인적으로 직관적으로 DATETIME의 일정 값을 추출할 수 있다고 생각합니다.
  • YEAR(), MONTH(), DAY()==DAYOFMONTH(), HOUR(), MINUTE(), SECOND()
  • 연도, 월, 일, 시, 분, 초
  • 위의 함수를 이용해 아주 간단하게 추출할 수 있었습니다.

연도 추출 - YEAR(컬럼명)

SELECT YEAR(DATETIME) AS YEAR
FROM ANIMAL_OUTS
GROUP BY YEAR(DATETIME)
ORDER BY YEAR

datetime-extract-each-value-2

월 추출 - MONTH(컬럼명)

SELECT MONTH(DATETIME) AS MONTH
FROM ANIMAL_OUTS
GROUP BY MONTH(DATETIME)
ORDER BY MONTH

datetime-extract-each-value-3

일 추출 - DAY(컬럼명) == DATOFMONTH(컬럼명)

SELECT DAY(DATETIME) AS DAY
FROM ANIMAL_OUTS
GROUP BY DAY(DATETIME)
ORDER BY DAY
SELECT DAYOFMONTH(DATETIME) AS DAY
FROM ANIMAL_OUTS
GROUP BY DAYOFMONTH(DATETIME)
ORDER BY DAY

datetime-extract-each-value-4

시간 추출 - HOUR(컬럼명)

SELECT HOUR(DATETIME) AS HOUR
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
ORDER BY HOUR

datetime-extract-each-value-5

분 추출 - MINUTE(컬럼명)

SELECT MINUTE(DATETIME) AS MINUTE
FROM ANIMAL_OUTS
GROUP BY MINUTE(DATETIME)
ORDER BY MINUTE

datetime-extract-each-value-6

초 추출 - SECOND(컬럼명)

SELECT SECOND(DATETIME) AS SECOND
FROM ANIMAL_OUTS
GROUP BY SECOND(DATETIME)
ORDER BY SECOND

datetime-extract-each-value-7

ORACLE

  • MySQL 함수보다는 직관적이지는 않지만, 그래도 추출(EXTACT)함수를 사용하며, 함수 안에 추출할 값 FROM 컬럼명 만 적으면 되기 때문에 그렇게 어렵지는 않습니다.
  • 또한 추가적으로 DATE 타입은 날짜만, TIMESTAMP는 시간관련된 값이 되어 있다. 이 두개를 합쳐 놓은게 DATETIME인데, EXTRACT를 하기 위해서는 각 타입에 맞게 변경(CAST) 해줘야 한다.

연도 추출 - EXTRACT(YEAR FROM 컬럼명)

  • 이때 컬럼 타입은 DATE
SELECT EXTRACT(YEAR FROM CAST(DATETIME AS DATE)) AS YEAR
FROM ANIMAL_OUTS A
GROUP BY EXTRACT(YEAR FROM CAST(DATETIME AS DATE))
ORDER BY YEAR

datetime-extract-each-value-2

월 추출 - EXTRACT(MONTH FROM 컬럼명)

  • 이때 컬럼 타입은 DATE
SELECT EXTRACT(MONTH FROM CAST(DATETIME AS DATE)) AS MONTH
FROM ANIMAL_OUTS A
GROUP BY EXTRACT(MONTH FROM CAST(DATETIME AS DATE))
ORDER BY MONTH

datetime-extract-each-value-3

일 추출 - EXTRACT(DAY FROM 컬럼명)

  • 이때 컬럼 타입은 DATE
SELECT EXTRACT(DAY FROM CAST(DATETIME AS DATE)) AS DAY
FROM ANIMAL_OUTS A
GROUP BY EXTRACT(DAY FROM CAST(DATETIME AS DATE))
ORDER BY DAY

datetime-extract-each-value-4

시간 추출 - EXTRACT(HOUR FROM 컬럼명)

  • 이때 컬럼 타입은 TIMESTAMP
SELECT EXTRACT(HOUR FROM CAST(DATETIME AS TIMESTAMP)) AS HOUR
FROM ANIMAL_OUTS A
GROUP BY EXTRACT(HOUR FROM CAST(DATETIME AS TIMESTAMP))
ORDER BY HOUR

datetime-extract-each-value-5

분 추출 - EXTRACT(MINUTE FROM 컬럼명)

  • 이때 컬럼 타입은 TIMESTAMP
SELECT EXTRACT(MINUTE FROM CAST(DATETIME AS TIMESTAMP)) AS MINUTE
FROM ANIMAL_OUTS A
GROUP BY EXTRACT(MINUTE FROM CAST(DATETIME AS TIMESTAMP))
ORDER BY MINUTE

datetime-extract-each-value-6

초 추출 - EXTRACT(MINUTE FROM 컬럼명)

  • 이때 컬럼 타입은 TIMESTAMP
SELECT EXTRACT(SECOND FROM CAST(DATETIME AS TIMESTAMP)) AS SECOND
FROM ANIMAL_OUTS A
GROUP BY EXTRACT(SECOND FROM CAST(DATETIME AS TIMESTAMP))
ORDER BY SECOND

datetime-extract-each-value-7

728x90
728x90
저작자표시 비영리 (새창열림)

'Backend > DataBase' 카테고리의 다른 글

SQL의 DDL, DML, DCL, TCL  (0) 2021.01.12
🤔 CASE WHEN ~ THEN ~ ELSE END  (0) 2021.01.11
Transaction의 성질 - ACID  (0) 2020.12.19
개념 모델 vs 논리모델 vs 물리모델  (0) 2020.10.30
NoSQL vs RDBMS  (0) 2020.08.19
  1. 서론
  2. MySQL
  3. 연도 추출 - YEAR(컬럼명)
  4. 월 추출 - MONTH(컬럼명)
  5. 일 추출 - DAY(컬럼명) == DATOFMONTH(컬럼명)
  6. 시간 추출 - HOUR(컬럼명)
  7. 분 추출 - MINUTE(컬럼명)
  8. 초 추출 - SECOND(컬럼명)
  9. ORACLE
  10. 연도 추출 - EXTRACT(YEAR FROM 컬럼명)
  11. 월 추출 - EXTRACT(MONTH FROM 컬럼명)
  12. 일 추출 - EXTRACT(DAY FROM 컬럼명)
  13. 시간 추출 - EXTRACT(HOUR FROM 컬럼명)
  14. 분 추출 - EXTRACT(MINUTE FROM 컬럼명)
  15. 초 추출 - EXTRACT(MINUTE FROM 컬럼명)
'Backend/DataBase' 카테고리의 다른 글
  • SQL의 DDL, DML, DCL, TCL
  • 🤔 CASE WHEN ~ THEN ~ ELSE END
  • Transaction의 성질 - ACID
  • 개념 모델 vs 논리모델 vs 물리모델
Seyun(Marco)
Seyun(Marco)
개발, PO, PM, 기획과 관련된 서비스 관련 업무에 관심이 있습니다. 또한 성장,교육과 관련된 주제에 대해서도 관심이 많습니다. 티타임을 좋아하는 사람으로써, 혹시 티타임에 관심이 있으신 분은 ksy90101@gmail.com로 메일 보내주시면 감사하겠습니다 :) 과제를 제공해주고 피드백을 주는 서비스를 오픈하였습니다. 관심있으신 분들은 https://jobskill.notion.site/ 해당 사이트를 참고해주세요.
250x250
Seyun(Marco)
Enthusiastically, Steady, Slowly
Seyun(Marco)
전체
오늘
어제
  • 분류 전체보기 (258)
    • Common (31)
      • ComputerScience (10)
      • Web (9)
      • Git (1)
      • 세미나 (8)
      • Testing (3)
    • Backend (129)
      • Java (35)
      • Kotlin (3)
      • Spring (26)
      • Ruby (11)
      • RubyOnRails (17)
      • Python (1)
      • Django (3)
      • Infra (3)
      • DataBase (9)
      • SQL (21)
    • Frontend (30)
      • HTML&CSS (1)
      • JavaScript (16)
      • TypeScript (1)
      • Vue (5)
      • Nuxt.js (3)
      • React (4)
    • Book (30)
      • 이펙티브 자바 3판 (9)
    • Lecture (26)
      • [인프런] Vue.js 시작하기 - Age of .. (14)
      • [Tacademy] JPA 프로그래밍 기본기 다지.. (8)
    • 회고 (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • java
  • system.out.println
  • MVC
  • rubyonrails
  • JavaScriprt
  • scanner
  • System.out.printlin
  • 우아콘
  • locale
  • ruby
  • Nuxt3
  • 멱등성
  • REST API
  • Finalization
  • IBM Plex Sans
  • JAR index
  • SCSS
  • RESTful
  • 개발문화
  • JUnit

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
Seyun(Marco)
ORACLE, MYSQL 날짜에서 각 값들을 추출하기 🧐
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.