반응형

1. AVG(col)

※ 컬럼(열이름)에 해당하는 데이터의 평균값을 1개 리턴한다.

SELECT AVG(컬럼) FROM 테이블명;

2. SUM(col)

※ 컬럼(열이름)에 해당하는 데이터의 합계를 1개 리턴한다.

SELECT SUM(컬럼) FROM 테이블명;

3. MIN(col)

※ 컬럼(열이름)에 해당하는 데이터의 최소값 1개 리턴한다.

SELECT MIN(컬럼) FROM 테이블명;

4. MAX(col)

※ 컬럼(열이름)에 해당하는 데이터의 최댓값 1개 리턴한다.

SELECT MAX(컬럼) FROM 테이블명;
반응형
반응형

MySQL 날짜 더하기/빼기 함수

단위

  • SECOND : 초
  • MINUTE : 분
  • HOUR :시
  • DAY : 일
  • WEEK : 주
  • MONTH : 월
  • YEAR : 연

1. DATE_ADD(DATE, INTERVAL value 단위) / DATE_SUB(DATE, INTERVAL value 단위)

※ 더하기 함수

1) 초(SECOND) 더하기
= SELECT DATE_ADD('2020-05-25 10:00:00.0', INTERVAL 10 SECOND) FROM DUAL;
= SELECT DATE_SUB('2020-05-25 10:00:00.0', INTERVAL -10 SECOND) FROM DUAL;

: 2020-05-25 10:00:10

2) 분(MINUTE) 더하기
= SELECT DATE_ADD('2020-05-25 10:00:00.0', INTERVAL 10 MINUTE) FROM DUAL;
= SELECT DATE_SUB('2020-05-25 10:00:00.0', INTERVAL -10 MINUTE) FROM DUAL;
: 2020-05-25 10:10:00

3) 시간(HOUR) 더하기
= SELECT DATE_ADD('2020-05-25 10:00:00.0', INTERVAL 10 HOUR) FROM DUAL;
= SELECT DATE_SUB('2020-05-25 10:00:00.0', INTERVAL -10 HOUR) FROM DUAL;
: 2020-05-25 20:00:00

4) 일(DAY) 더하기
= SELECT DATE_ADD('2020-05-25 10:00:00.0', INTERVAL 10 DAY) FROM DUAL;
= SELECT DATE_SUB('2020-05-25 10:00:00.0', INTERVAL -10 DAY) FROM DUAL;
: 2020-06-04 10:00:00

5) 주(WEEK) 더하기
= SELECT DATE_ADD('2020-05-25 10:00:00.0', INTERVAL 10 WEEK) FROM DUAL;
= SELECT DATE_SUB('2020-05-25 10:00:00.0', INTERVAL -10 WEEK) FROM DUAL;
: 2020-08-03 10:00:00

6) 월(MONTH) 더하기
= SELECT DATE_ADD('2020-05-25 10:00:00.0', INTERVAL 10 MONTH) FROM DUAL;
= SELECT DATE_SUB('2020-05-25 10:00:00.0', INTERVAL -10 MONTH) FROM DUAL;
: 2021-03-25 10:00:00

7) 연(YEAR) 더하기
=SELECT DATE_ADD('2020-05-25 10:00:00.0', INTERVAL 10 YEAR) FROM DUAL;
=SELECT DATE_SUB('2020-05-25 10:00:00.0', INTERVAL -10 YEAR) FROM DUAL;
: 2030-05-25 10:00:00

※ 빼기 함수

1) 초(SECOND) 빼기
= SELECT DATE_ADD('2020-05-25 10:00:00.0', INTERVAL -10 SECOND) FROM DUAL;
= SELECT DATE_SUB('2020-05-25 10:00:00.0', INTERVAL 10 SECOND) FROM DUAL;

: 2020-05-25 09:59:50

2) 분(MINUTE) 빼기
= SELECT DATE_ADD('2020-05-25 10:00:00.0', INTERVAL -10 MINUTE) FROM DUAL;
= SELECT DATE_SUB('2020-05-25 10:00:00.0', INTERVAL 10 MINUTE) FROM DUAL;
: 2020-05-25 09:50:00

3) 시간(HOUR) 빼기
= SELECT DATE_ADD('2020-05-25 10:00:00.0', INTERVAL -10 HOUR) FROM DUAL;
= SELECT DATE_SUB('2020-05-25 10:00:00.0', INTERVAL 10 HOUR) FROM DUAL;
: 2020-05-25 00:00:00

4) 일(DAY) 빼기
= SELECT DATE_ADD('2020-05-25 10:00:00.0', INTERVAL -10 DAY) FROM DUAL;
= SELECT DATE_SUB('2020-05-25 10:00:00.0', INTERVAL 10 DAY) FROM DUAL;
: 2020-05-15 10:00:00

5) 주(WEEK) 빼기
= SELECT DATE_ADD('2020-05-25 10:00:00.0', INTERVAL -10 WEEK) FROM DUAL;
= SELECT DATE_SUB('2020-05-25 10:00:00.0', INTERVAL 10 WEEK) FROM DUAL;
: 2020-03-16 10:00:00

6) 월(MONTH) 빼기
= SELECT DATE_ADD('2020-05-25 10:00:00.0', INTERVAL -10 MONTH) FROM DUAL;
= SELECT DATE_SUB('2020-05-25 10:00:00.0', INTERVAL 10 MONTH) FROM DUAL;
: 2019-07-25 10:00:00

7) 연(YEAR) 빼기
=SELECT DATE_ADD('2020-05-25 10:00:00.0', INTERVAL -10 YEAR) FROM DUAL; 
=SELECT DATE_SUB('2020-05-25 10:00:00.0', INTERVAL 10 YEAR) FROM DUAL;
: 2010-05-25 10:00:00

2. ADDDATE(DATE, INTERVAL value 단위)

※ 더하기 함수

단위

  • SECOND : 초
  • MINUTE : 분
  • HOUR :시
  • DAY : 일
  • WEEK : 주
  • MONTH : 월
  • QUARTER : 분기
  • YEAR : 연
1) SELECT ADDDATE('2020-05-25 10:00:00.0', INTERVAL 10 SECOND) FROM DUAL;
: 2020-05-25 10:00:10

2) SELECT ADDDATE('2020-05-25 10:00:00.0', INTERVAL 10 MINUTE) FROM DUAL;
: 2020-05-25 10:10:00

3) SELECT ADDDATE('2020-05-25 10:00:00.0', INTERVAL 10 HOUR) FROM DUAL;
: 2020-05-25 20:00:00

4) SELECT ADDDATE('2020-05-25 10:00:00.0', INTERVAL 10 DAY) FROM DUAL;
: 2020-06-04 10:00:00

5) SELECT ADDDATE('2020-05-25 10:00:00.0', INTERVAL 10 WEEK) FROM DUAL;
: 2020-08-03 10:00:00

6) SELECT ADDDATE('2020-05-25 10:00:00.0', INTERVAL 10 MONTH) FROM DUAL;
: 2021-03-25 10:00:00

7) SELECT ADDDATE('2020-05-25 10:00:00.0', INTERVAL 10 QUARTER) FROM DUAL;
: 2022-11-25 10:00:00

8) SELECT ADDDATE('2020-05-25 10:00:00.0', INTERVAL 10 YEAR) FROM DUAL;
: 2030-05-25 10:00:00
반응형
반응형

MySQL 두 날짜 차이 계산 함수

1. DATEDIFF(날짜1, 날짜2)

※ 날짜를 인자 (날짜1 - 날짜2) 로 계산한 값을 DAY수를 반환한다.

SELECT DATEDIFF('2020-05-25 09:50:41.0', '2020-05-01 09:50:41.0') FROM DUAL;

/*
※ 출력 결과
24
*/

2. TIMESTAMPDIFF(단위, 날짜1, 날짜2)

단위

  • SECOND : 초
  • MINUTE : 분
  • HOUR :시
  • DAY : 일
  • WEEK : 주
  • MONTH : 월
  • QUARTER : 분기
  • YEAR : 연

※ 단위 인자 기준으로 (날짜2 - 날짜1) 로 계산한 값을 반환 

1) SELECT TIMESTAMPDIFF(SECOND,'2020-05-01 09:50:41.0', '2020-05-25 09:50:41.0') FROM DUAL;
: 2073600

2) SELECT TIMESTAMPDIFF(MINUTE,'2020-05-01 09:50:41.0', '2020-05-25 09:50:41.0') FROM DUAL;
: 34560

3) SELECT TIMESTAMPDIFF(HOUR,'2020-05-01 09:50:41.0', '2020-05-25 09:50:41.0') FROM DUAL;
: 576

4) SELECT TIMESTAMPDIFF(DAY,'2020-05-01 09:50:41.0', '2020-05-25 09:50:41.0') FROM DUAL;
: 24

5) SELECT TIMESTAMPDIFF(WEEK,'2020-05-01 09:50:41.0', '2021-05-25 09:50:41.0') FROM DUAL;
: 55

6) SELECT TIMESTAMPDIFF(MONTH,'2020-05-01 09:50:41.0', '2020-08-25 09:50:41.0') FROM DUAL;
: 3

7) SELECT TIMESTAMPDIFF(QUARTER,'2020-05-01 09:50:41.0', '2021-05-25 09:50:41.0') FROM DUAL;
: 4

8) SELECT TIMESTAMPDIFF(YEAR,'2020-05-01 09:50:41.0', '2022-05-25 09:50:41.0') FROM DUAL;
: 2
반응형

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

[DB] MySQL 다중행 함수  (0) 2020.05.25
[DB] MySQL 날짜 더하기/빼기 함수  (0) 2020.05.25
[DB] MySQL 기본 날짜함수  (0) 2020.05.23
[DB] MySQL 함수정리  (0) 2020.05.23
[DB] MySQL 한글 인코딩 설정  (0) 2020.05.22
반응형

날짜 함수

1. NOW()

※ 현재 날짜시간 리턴

(동일한 쿼리에서 함수가 여러번 호출되더라도 동일한 값을 반환)

 

설명) 형식 : 2020-05-23 21:08:56

SELECT NOW(), SLEEP(2), NOW() FROM DUAL;

RESULT :
2020-05-23 21:19:37
0
2020-05-23 21:19:37

2. SYSDATE()

※ 현재 날짜시간 리턴

(함수가 호출될때 시점으로 값을 반환)

SELECT SYSDATE(), SLEEP(2), SYSDATE() FROM DUAL;

RESULT :
2020-05-23 21:21:08
0
2020-05-23 21:21:10

3. CURDATE()

※ 정의

1) CURDATE() 함수만 호출시 YYYY-MM-DD로 현재 날짜 반환

2) CURDATE() 가 숫자 혹은 문자열과 함께 사용되면 숫자로 계산된 결과를 반환

1) SELECT CURDATE() FROM DUAL;

RESULT
: 2020-05-23

2) SELECT CURDATE() + 30 FROM DUAL;

RESULT
: 2020523 + 30 = 2020553

4. CURTIME()

1) CURTIME() 함수만 호출시 HH:MM:SS 로 현재 시간 반환

2) CURTIME() 가 숫자 혹은 문자열과 함께 사용되면 숫자로 계산된 결과를 반환

1) SELECT CURTIME() FROM DUAL;

RESULT
: 09:40:47

2) SELECT CURTIME() + 500 FROM DUAL;

RESULT (현재시간 : 09:40:56)
: 94556

5. YEAR()

※ 해당 날짜의 '년도'를 리턴

SELECT YEAR('2020-05-25 09:50:41.0') FROM DUAL;

RESULT
: 2020

6. MONTH()

※ 해당 날짜의 '월'을 리턴

SELECT MONTH('2020-05-25 09:50:41.0') FROM DUAL;

RESULT
: 5

7. DAY()

※ 해당 날짜의 '일'을 리턴

SELECT DAY('2020-05-25 09:50:41.0') FROM DUAL;

RESULT
: 25

8. HOUR() or MINUTE() or SECOND()

1) 해당 날짜의 '시간'을 리턴

2) 해당 날짜의 '분'을 리턴

3) 해당 날짜의 '초'를 리턴

1) SELECT HOUR('2020-05-25 09:50:41.0') FROM DUAL;

RESULT
: 9

2) SELECT MINUTE('2020-05-25 09:50:41.0') FROM DUAL;

RESULT
: 50

3) SELECT SECOND('2020-05-25 09:50:41.0') FROM DUAL;

RESULT
: 41

9. DAYOFYEAR()

※ 해당 날짜의 해에서 몇 번째 날인지를 리턴. (리턴값 1~365)

SELECT DAYOFYEAR('2020-05-25 09:50:41.0') FROM DUAL;

RESULT
: 146

10. DAYOFMONTH()

※ 해당 날짜의 달에서 몇 번째 날인지를 리턴. (리턴값 1~31)

SELECT DAYOFMONTH('2020-05-25 09:50:41.0') FROM DUAL;

RESULT
: 25

11. DAYOFWEEK()

※ 해당 날짜가 한 주의 무슨요일인지를 숫자로 리턴. (리턴값 : 일요일 = 1, 월요일 = 2, ... 토요일 = 7)

SELECT DAYOFWEEK('2020-05-25 09:50:41.0') FROM DUAL;

RESULT (해당 날짜 요일은 월요일)
:
2

12. WEEKDAY()

※ 해당 날짜가 한 주의 무슨요일인지를 숫자로 리턴. (리턴값 : 월요일 = 0, 화요일 = 1, ... ,일요일 = 6)

SELECT WEEKDAY('2020-05-25 09:50:41.0') FROM DUAL;

RESULT (해당 날짜 요일은 월요일)
: 0

13. DAYNAME()

※ 해당 날짜가 한 주의 무슨요일인지를 영어로 리턴. 

SELECT DAYNAME('2020-05-25 09:50:41.0') FROM DUAL;

RESULT (해당 날짜 요일은 월요일)
: Monday

14. MONTHNAME()

※ 해당 날짜가 몇월인지 영어로 리턴

SELECT MONTHNAME('2020-05-25 09:50:41.0') FROM DUAL;

RESULT
: May

15. QUARTER()

※ 해당 날짜가 몇분기인지 숫자로 리턴(리턴값 : 1~4)

SELECT QUARTER('2020-05-25 09:50:41.0') FROM DUAL;

RESULT
: 2

16. WEEK(DATE, FIRST)

1) 한주의 시작을 일요일(FIRST의 디폴트는 0)로 계산하여 해당 날짜가 몇번째 주인지 반환

2) 한주의 시작을 일요일(FIRST = 0)로 계산하여 해당 날짜가 몇번째 주인지 반환 

3) 한주의 시작을 월요일(FIRST = 1)로 계산하여 해당 날짜가 몇번째 주인지 반환 

1) SELECT WEEK('2020-05-25 09:50:41.0') FROM DUAL;

RESULT
: 21

2) SELECT WEEK('2020-05-25 09:50:41.0', 0) FROM DUAL;

RESULT
: 21

3) SELECT WEEK('2020-05-25 09:50:41.0', 1) FROM DUAL;

RESULT
: 22

17. LAST_DAY()

※해당 날짜의 월의 마지막 날짜를 반환 (YYYY-MM-DD)

SELECT LAST_DAY('2020-05-25 09:50:41.0') FROM DUAL;

RESULT
: 2020-05-31
반응형
반응형

문자열 함수

1. ASCII()

※ 문자를 아스키코드 값으로 변환하여 반환한다.

 

설명) 문자 a를 아스키코드 값으로 변환하여 97을 반환한다.

SELECT ASCII('a') FROM DUAL;

2. CHAR()

아스키코드 값을 주면 그에 해당하는 문자값을 반환한다.

 

설명) 아스키코드 97에 해당하는 문자값 'a'를 반환한다.

SELECT CHAR(97) FROM DUAL;
=
SELECT CAST(CHAR(97) AS CHAR(1)) FROM DUAL;

3. LENGTH()

 문자열의 길이를 반환한다.

 

설명) 열이름에 해당하는 모든 데이터의 문자열 길이를 반환한다.

SELECT LENGTH(열이름) FROM 테이블명;

4. INSTR()

※ 찾고자 하는 문자열의 시작위치를 반환한다.

 

설명) 열이름에 해당하는 모든 데이터의 값 중 찾고자하는 문자열의 위치를 반환한다.

SELECT INSTR(열이름, 찾고자 하는 문자열) FROM 테이블명;

5. LEFT() or MID() or RIGHT()

※ 문자열에서 원하는 위치에서 갯수만큼 문자열를 추출할때 사용

 

설명) 문자열의 시작위치는 1 이다.

# LEFT()
SELECT LEFT(문자열, 추출갯수) FROM DUAL;
# MID()
SELECT MID(문자열, 시작위치, 추출갯수) FROM DUAL;
# RIGHT()
SELECT RIGHT(문자열, 추출갯수) FROM DUAL;

예시)
# LEFT()
SELECT LEFT('ABCDEFGHIJK',3) FROM DUAL;
# MID()
SELECT MID('ABCDEFGHIJK',3,6) FROM DUAL;
# RIGHT()
SELECT RIGHT('ABCDEFGHIJK',3) FROM DUAL;

RESULT :
ABC
CDEFGH
IJK

6. SUBSTR() or SUBSTRING()

문자열 자르기

빨간색 체크 출력 결과

1) 문자열을 시작위치를 기준으로 끝까지 호출
= SELECT SUBSTR('ABCDEFGHIJKLM',3) FROM DUAL;
= SELECT SUBSTRING('ABCDEFGHIJKLM',3) FROM DUAL;
= SELECT SUBSTR('ABCDEFGHIJKLM' FROM 3) FROM DUAL;
= SELECT SUBSTR('ABCDEFGHIJKLM' FROM 3) FROM DUAL;

2) 문자열을 시작위치에서 원하는갯수만큼 호출
= SELECT SUBSTR('ABCDEFGHIJKLM', 3, 4) FROM DUAL;
= SELECT SUBSTRING('ABCDEFGHIJKLM', 3, 4) FROM DUAL;
= SELECT SUBSTR('ABCDEFGHIJKLM' FROM 3 FOR 4) FROM DUAL;
= SELECT SUBSTR('ABCDEFGHIJKLM' FROM 3 FOR 4) FROM DUAL;

7. LOWER() or UPPER()

※ 문자열을 소문자/대문자로 변환

SELECT LOWER('LOWER') FROM DUAL;
RESULT : lower

SELECT UPPER('upper') FROM DUAL;
RESULT : UPPER

8. LTRIM() or TRIM() or RTRIM()

※ 문자열의 왼쪽/전체[왼쪽 AND 오른쪽]/오른쪽 공백 제거 

SELECT LTRIM('    MY  SQL    ') FROM DUAL;
RESULT : 'MY  SQL    '

SELECT TRIM(' MY SQL ') FROM DUAL;
RESULT : 'MY  SQL'

SELECT RTRIM(' MY SQL ') FROM DUAL;
RESULT : '   MY  SQL'

숫자형 함수

1. CEIL()

※ 올림함수 

= SELECT CEIL(1.1) FROM DUAL;
= SELECT CEIL(1.5) FROM DUAL;
= SELECT CEIL(1.9) FROM DUAL;

RESULT :  2

2. FLOOR()

※ 소수점 버림 함수

SELECT FLOOR(1.51231) FROM DUAL;

RESULT : 1

3. ROUND() 

※ 소수점 위치를 지정하여 반올림 (위치 디폴트 : 0 [정수 부분])

 

설명)

1) 위치값이 인자가 없을경우 0 으로 지정

2) 소수점 3번쨰 자리에서 반올림

1) SELECT ROUND(1.23254) FROM DUAL;

RESULT :  1

2) SELECT ROUND(1.23254, 3) FROM DUAL;

RESULT :  1.233

4. TRUNCATE()

※ 버릴 자릿수 아래로 버림

빨간색 체크 숫자 버림

1) SELECT TRUNCATE(3451.34567, 0) FROM DUAL;

RESULT : 3451

2) SELECT TRUNCATE(3451.34567, 2) FROM DUAL;

RESULT : 3451.34 

3) SELECT TRUNCATE(3451.34567, -2) FROM DUAL;

RESULT : 3400

5. MOD()

※ a 를 b로 나눈 나머지를 반환

SELECT MOD(a, b) FROM DUAL;

예시) SELECT MOD(14, 3) FROM DUAL;

RESULT: 2

6. RAND()

※ 0 부터 1 사이의 난수 반환

SELECT RAND() FROM DUAL;

RESULT : 0 부터 1 사이의 난수 반환(호출시 마다 다른값을 반환) 
반응형
반응형

MySQL 한글 인코딩 설정

1. my.ini 파일 경로 찾기

  • MySQL 접속
  • show variables like 'datadir%'; 입력
  • my.ini 파일 경로 찾기

2. my.ini 파일 열기

  • Mysql Server 경로로 이동
  • my.ini 파일을 메모장으로 열기

3. my.ini 파일 내용 확인

  • 빨간색 으로 체크되어있는 해드라인이 없으면 추가
  • 파일내용 중 빨간색으로 체크되어있는 해드라인을 찾아 파란색으로 체크되어 있는 내용을 추가 작성 

4. my.ini 파일 내용 수정

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

[mysqld]
character-set-client-handshake = FALSE
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
character-set-server = utf8

5. 윈도우 검색창에 '서비스' 검색 후 MySQL 서버 재시작

  • MySQL 찾아서 서비스 중지 후 재시작

6. MySQL Character Set이 utf8 로 설정 되었는지 확인

  • show variables like 'c%'; 실행
  • Value 값이 utf8로 변경되어 있는지 확인

7. GUI 프로그램(Oracle Developer)에서 한글 인코딩 확인 


■ 명령 프롬프트(COMMEND) 창에서 한글 인코딩 설정

1. 명령 프롬프트창을 UTF8로 설정

  • chcp 65001 입력 (※ 65001은 UTF8을 의미)

2. 아래와 같은 명령 프롬프트창(COMMEND)은 한글 인코딩이 가능


데이터 베이스(DB) 한글 인코딩 설정

▶ MySQL 접속

▶ ALTER DATABASE testdb DEFAULT CHARACTER SET 'utf8';  실행

테이블(Table) 한글 인코딩 설정

테이블 생성시 한글 인코딩 설정
▶ MySQL 접속

▶ CREATE TABLE 테이블명(
           컬럼 설정
                :
    )default charset = 'utf8';
반응형

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

[DB] MySQL 기본 날짜함수  (0) 2020.05.23
[DB] MySQL 함수정리  (0) 2020.05.23
[DB] MySQL 기본 문법 정리  (0) 2020.05.22
[DB GUI] Oracle SQL Developer에 MySQL연동  (0) 2020.05.21
[DB GUI] Heidi SQL 설치 방법  (0) 2020.05.21

+ Recent posts