본문 바로가기
Programming/SQL

[MySQL] 날짜 요일로 변환하기

by 코딩하는 금융인 2021. 6. 25.

MySQL 날짜 요일 구하기

오늘은 DBMS의 대표 툴 MySQL을 활용하여 날짜의 요일을 구해보겠습니다.

종종 데이터 중에 요일은 없고 날짜만 덩그러니 있는 경우가 있습니다. 이럴 때, 어떻게 요일을 조회하고 또 Oracle과는 어떤 차이가 있는지 알아보겠습니다.


예시 사이트 : w3school-mysql

Sample Data : Employees

EmployeeID LastName FirstName BirthDate Photo Notes
1 Davolio Nancy 1968-12-08 EmpID1.pic Education includes a BA in psychology from Colorado State University. She also completed (The Art of the Cold Call). Nancy is a member of 'Toastmasters International'.
2 Fuller Andrew 1952-02-19 EmpID2.pic Andrew received his BTS commercial and a Ph.D. in international marketing from the University of Dallas. He is fluent in French and Italian and reads German. He joined the company as a sales representative, was promoted to sales manager and was then named vice president of sales. Andrew is a member of the Sales Management Roundtable, the Seattle Chamber of Commerce, and the Pacific Rim Importers Association.
3 Leverling Janet 1963-08-30 EmpID3.pic Janet has a BS degree in chemistry from Boston College). She has also completed a certificate program in food retailing management. Janet was hired as a sales associate and was promoted to sales representative.
4 Peacock Margaret 1958-09-19 EmpID4.pic Margaret holds a BA in English literature from Concordia College and an MA from the American Institute of Culinary Arts. She was temporarily assigned to the London office before returning to her permanent post in Seattle.
˙˙˙˙˙˙ ˙˙˙˙˙˙ ˙˙˙˙˙˙ ˙˙˙˙˙˙ ˙˙˙˙˙˙ ˙˙˙˙˙˙

오라클 & MySQL format 차이

◈ 날짜 format

# 현재 날짜시간#
Oracle : SYSDATE Mysql : NOW()

Oracle : TO_CHAR(sysdate,'MMDDYYYYHH24MISS')
Mysql : DATE_FORMAT(now(),'%Y%m%d%H%i%s') -> 여기서 대문자Y는 4자리 년도, 소문자 y는 2자리 년도

 

◈ 요일 format

Oracle : 요일이 1~7로 인식함 -> TO_CHAR(SYSDATE - 1, 'D')

Mysql : 요일이 0~6으로 인식 -> DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%w')

 

MySQL 요일 구하기

◈ #1 예제 쿼리

select Lastname, Firstname,
       case weekday(BirthDate)
       when '0' then '월요일'
       when '1' then '화요일'
       when '2' then '수요일'
       when '3' then '목요일'
       when '4' then '금요일'
       when '5' then '토요일'
       when '6' then '일요일'
       end as '생일 요일' from employees

 

◈ #2 예제 쿼리

select Lastname, Firstname,
       case dayofweek(BirthDate)
       when '1' then '일요일'
       when '2' then '월요일'
       when '3' then '화요일'
       when '4' then '수요일'
       when '5' then '목요일'
       when '6' then '금요일'
       when '7' then '토요일'
       end as '생일 요일' from employees

 

◈ 쿼리 결과 (동일)

Lastname Firstname 생일 요일
Davolio Nancy 일요일
Fuller Andrew 화요일
Leverling Janet 금요일
Peacock Margaret 금요일
Buchanan Steven 금요일
Suyama Michael 화요일
King Robert 일요일
Callahan Laura 목요일
Dodsworth Anne 수요일
West Adam 수요일

weekday()와 dayofweek은 요일에 대한 결과 숫자에서 차이가 있습니다.

weekday는 0 ~ 6 : 월요일 ~ 일요일

dayofweek은 1 ~ 7 : 일요일 ~ 토요일

 

함수는 사용하기 편한 함수를 사용하면 되고 개인적으로 요일을 다룸에 있어서는 강력한 함수를 가진 MySQL이 Oracle보다 더 유용한 것 같습니다.

 

References
반응형

댓글