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
반응형
'Programming > SQL' 카테고리의 다른 글
[SQL] 그룹별 문자열 묶기 (group_concat, listag) (1) | 2021.07.04 |
---|---|
[MySQL] 정규표현식 검색하기 REGEXP, LIKE (2) | 2021.06.30 |
[MySQL] 그룹 함수 다루기 (0) | 2021.06.22 |
[MySQL] SQL 변수 생성 및 활용 (0) | 2021.06.11 |
[MySQL] 중복 데이터 찾기 및 제거 (2) | 2021.05.30 |
댓글