본문 바로가기

코딩공부

[SQL] MySQL 내장함수 #2 (수학, 날짜&시간, 시스템 정보 함수)

✍️ Study Note

 

 


 

[수학 함수]

 

1. ABS (숫자) 

숫자의 절대값을 반환

 

2. CEILING, FLOOR, ROUND (숫자)

숫자가 소수점일 때, 올림, 내림, 반올림을 반환

 

3. CONV(숫자, 원래 진수, 변환할 진수)

진수 변환

 

4. DEGREES, RADIANS, PI

  • DEGRESS : 라디안 값 -> 각도값으로 변환
  • rADIANS : 각도값 -> 라디안 값으로 변환
  • PI : 파이값 3.141592 반환

 

5. MOD (숫자1, 숫자2)

  • 숫자1을 숫자2로 나눈 후 나머지 값을 반환
  • [숫자1 % 숫자2] 로 표현할 수 있음

 

6. POW, SQRT 

  • POW (숫자1, 숫자2) : 숫자1을 숫자2만큼 제곱한 값 반환
  • SQRT(숫자) : 해당 숫자의 루트값 반환

 

7. SIGN (숫자)

  • 숫자의 양수, 음수 여부를 반환
  • 1 (양수) / 0 / -1 (음수)

 

8. TRUNCATE (숫자, 정수)

  • 숫자를 '정수'위치까지 반환하고, 나머지는 버림
  • 정수 = 양수 : 숫자의 소수점 어느 자리까지 표시할지
  • 정수 = 음수 : 숫자의 정수 어느 자리까지 표시할지

 

SELECT ABS(-100); -- 결과 : 100
SELECT CEILING(4.7), FLOOR(4.7), ROUND(4.7); -- 결과 : 5,4,5
SELECT CONV('AA', 16,2), CONV(100,10,8); -- 결과 : 10101010,144
SELECT DEGREES(PI()), RADIANS(108); -- 결과 : 180, 1.8849
SELECT MOD(157,10), 157 % 10; -- 결과 : 7
SELECT POW(2,3), SQRT(9); -- 결과 : 8, 3
SELECT SIGN (100), SIGN (0), SIGN (-100.345); -- 결과 : 1, 0, -1
SELECT TRUNCATE(12345.12345,2), TRUNCATE(12345.12345,-2); -- 결과 : 12345.12, 12300

 

 

 

[날짜, 시간 함수]

 

1. ADDDATE, SUBDATE (날짜, 더하거나 뺄 일수)

2. ADDTIME, SUBTIME (시간, 더하거나 뺄 시간)

 

3. CURDATE, CURTIME, NOW, SYSDATE ()

  • CURDATE / CURRENT_DATE : 현재 연-월-일
  • CURTIME / CURRENT_TIME : 현재 시:분:초
  • NOW /SYSDATE / LOCALTIME / LOCALTIMESTAMP : 현재 연-월-일 & 시:분:초

 

4. YEAR, MONTH, DAY, DAYOFMONTH (날짜) / HOUR, MINUTE, SECOND (시간)

연, 월, 일, 시, 분 초 구하기

 

5. DATE(날짜), TIME (시간)

  • DATE : 연-월-일 반환
  • TIME : 시:분:초 반환

 

6. DATEDIFF(날짜1, 날짜2), TIMEDIFF (시간1, 시간2)

  • DATEDIFF : [날짜1] - [날짜2]의 결과 반환
  • TIMEDIFF : [시간1] - [시간2]의 결과 반환

 

7. DATEOFWEEK, MONTHNAME, DAYOFYEAR (날짜)

  • DATEOFWEEK : 요일값 반환 (1:일요일, 2:월요일 ~ 7:토요일)
  • MONTHNAME : 해당 월 이름 반환 (SEPTEMBER, OCTOBER)
  • DAYOFYEAR : 1년 365일 중 오늘에 해당하는 일수 반환

 

8. LAST_DAY (날짜)

날짜가 속한 달의 마지막 일 반환

 

9. MAKEDATE (연도, 정수)

해당 연도 1월 1일에서 '정수'만큼 지난 날짜 반환

 

10. MAKETIME(시, 분, 초)

주어진 시, 분, 초를 이용해서 TIME 형식 (시:분:초)로 변환

 

11. PERIOD_ADD(연월, 개월수), PERIOD_DIFF(연월1, 연월2)

  • PERIOD_ADD : 연월에서 개월수만큼 지난 연월을 반환
  • PERIOD_DIFF : [연월1 - 연월2] 값 반환
  • 연월은 'YYYYMM'형식으로 작성 필요

 

12. QUARTER (날짜)

날짜가 속한 분기를 반환

 

13. TIME_TO_SEC (시간)

해당 시간을 초로 반환

 

SELECT ADDDATE('2021-01-01', INTERVAL 30 DAY), ADDDATE('2021-01-01', INTERVAL 1 MONTH); -- 결과 : 2021-01-31, 2021-02-01
SELECT SUBDATE('2021-01-01', INTERVAL 30 DAY), SUBDATE('2021-01-01', INTERVAL 1 MONTH); -- 결과 : 2020-12-02, 2020-12-01
SELECT ADDTIME('2021-01-01 23:59:59', '1:1:1'), ADDTIME('15:00:00', '2:10:10'); -- 결과 : 2021-01-02 01:01:00, 17:10:10
SELECT SUBTIME('2021-01-01 23:59:59', '1:1:1'), SUBTIME('15:00:00', '2:10:10'); -- 결과 : 2021-01-01 22:58:58, 12:49:50


SELECT CURDATE(), CURTIME(), NOW(), SYSDATE();
SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW()), DAYOFMONTH(NOW());
SELECT HOUR(CURRENT_TIME), MINUTE(CURRENT_TIME),  SECOND(CURRENT_TIME), MICROSECOND(CURRENT_TIME);
SELECT DATE(NOW()), TIME(NOW());


SELECT DATEDIFF('2021-12-01', CURDATE()), TIMEDIFF('24:00:00', CURTIME());
SELECT DAYOFWEEK(CURDATE()), MONTHNAME(CURDATE()), DAYOFYEAR(CURDATE());
SELECT LAST_DAY(CURDATE()); -- 결과 : 2021-10-31
SELECT MAKEDATE(2021, 150); -- 결과 : 2021-05-30
SELECT MAKETIME(14,23,55); -- 결과 : 14:23:25
SELECT PERIOD_ADD(202001, 11), PERIOD_DIFF(202101,202110); -- 결과 : 202012, -9
SELECT QUARTER(CURDATE()); -- 결과 : 4
SELECT TIME_TO_SEC('01:00:00'); -- 결과 : 3600초 (1시간)

 

 

 

[시스템 정보 함수]

1. USER, DATABASE ()

현재 사용 중인 유저, 데이터베이스 조회

 

2. FOUND_ROWS()

 바로 앞 SELECT 문에서 조회된 행의 개수 반환 

 

3. ROW_COUNT() 

INSERT, UPDATE, DELETE 문 : 수정,삭제,입력된 행의 개수 반환

CREATE, DROP문 = 0 반환

SELECT문 = -1 반환

 

4. VERSION ()

현재 MySQL 버전 확인

 

5. SLEEP(초)

X초 후에 결과값이 반환

 

SELECT USER(), DATABASE(), SCHEMA(); 

USE SQLDB;
SELECT * FROM MEMBERtbl; -- 결과 : 3명의 멤버 조회
SELECT FOUND_ROWS(); -- 결과 : 3 

USE SQLDB;
UPDATE BUYTBL SET PRICE = PRICE*2; -- 결과 : 12개의 가격 2배로 변환
SELECT ROW_COUNT(); -- 결과 : 12 

SELECT SLEEP(10);
SELECT '10초후에 이게 보여요.'; -- 결과 : 10초 뒤에 메시지 나타남.