DB. MySQL 4 시간/날짜 관련 및 기타함수
시간/ 날짜 관련 함수들
1. CURRENT
함수 | 설명 |
---|---|
CURRENT_DATE, CURDATE | 현재 날짜 반환 |
CURRENT_TIME, CURTIME | 현재 시간 반환 |
CURRENT_TIMESTAMP, NOW | 현재 시간과 날짜 반환 |
ex1)
SELECT CURDATE(), CURTIME(), NOW();
2. DATE, TIME
함수 | 설명 |
---|---|
DATE | 문자열에 따라 날짜 생성 |
TIME | 문자열에 따라 시간 생성 |
ex1)
SELECT
'2021-6-1' = '2021-06-01',
DATE('2021-6-1') = DATE('2021-06-01'),
'1:2:3' = '01:02:03',
TIME('1:2:3') = TIME('01:02:03');
-
'2021-6-1' = '2021-06-01' 을 비교했을땐 문자열로 인식되어 0(FALSE)가 나옴
-
DATE안에 집어 넣게 되면 날짜로 인식하기 때문에 비교했을 때 1(TURE)가 나옴
-
'1:2:3' = '01:02:03'도 마찬가지로 문자열로 인식되어 0(FALSE)가 나옴
-
TIME안에 집어 넣으면 시간으로 인식되어, 비교하면 1(TRUE)가 나옴
**ex1-1)**
SELECT
1. '2021-6-1 1:2:3' = '2021-06-01 01:02:03',
2. DATE('2021-6-1 1:2:3') = DATE('2021-06-01 01:02:03'),
3. TIME('2021-6-1 1:2:3') = TIME('2021-06-01 01:02:03'),
4. DATE('2021-6-1 1:2:3') = TIME('2021-06-01 01:02:03'),
5. DATE('2021-6-1') = DATE('2021-06-01 01:02:03'),
6. TIME('2021-6-1 1:2:3') = TIME('01:02:03');
-
'2021-6-1 1:2:3' = '2021-06-01 01:02:03'은 문자열이기 때문에 0(FALSE)
-
DATE() 안에 시간도 들어 갔지만 시간은 무시됨 1(TRUE)
-
TIME() 안에 날짜도 들어 갔지만 날짜는 무시됨 1(TRUE)
-
DATE() 와 TIME() 안에 같은 날짜와 시간이 들어 갔지만 각 각 날짜와 시간만 인식 하기 때문에 0(FALSE)
-
DATE() 안에 한쪽엔 날짜만, 한쪽엔 날짜/시간이 들어갔지만 시간은 무시되서 1(TRUE)
-
TIME() 도 마찬가지로 날짜는 무시되서 1(TRUE)
**ex2) 테이블 적용**
SELECT * FROM Orders
WHERE OrderDate BETWEEN DATE('1997-1-1') AND DATE('1997-1-31');
BETWEEN과 DATE()를 사용하여 지정한 날짜 사이에 있는 데이터들을 불러 왔다.
3. YEAR, MONTH, DAY
함수 | 설명 |
---|---|
YEAR | 주어진 DATETIME 값의 년도 반환 |
MONTHNAME | 주어진 DATEDTIME 값의 월(영문) 반환 |
MONTH | 주어진 DATETIME 값의 월 반환 |
WEEKDAY | 주어진 DATETIME 값의 요일값 반환(월요일:0) |
DAYNAME | 주어진 DATETIME 값의 요일명 반환 |
DAYOFMONTH,DAY | 주어진 DATETIME 값의 날짜(일) 반환 |
ex1)
SELECT
SELECT OrderDate FROM Orders;
해당 정보를 YEAR, MONTH, DAY를 이용해서 나누어 본다.
ex1-1)
SELECT
OrderDate,
1. YEAR(OrderDate) AS YEAR,
2. MONTHNAME(OrderDate) AS MONTHNAME,
3. MONTH(OrderDate) AS MONTH,
4. WEEKDAY(OrderDate) AS WEEKDAY,
5. DAYNAME(OrderDate) AS DAYNAME,
6. DAY(OrderDate) AS DAY
FROM Orders;
-
OrderDate에서 년도에 해당하는 정보를 보여줌
-
OrderDate에서 월에 해당하는 정보를 영문으로 보여줌
-
OrderDate에서 월에 해당하는 정보를 숫자로 보여줌
-
OrderDate에서 요일에 해당하는 정보를 숫자로 보여줌
-
OrderDate에서 요일에 해당하는 정보를 영문으로 보여줌
-
OrderDate에서 일에 해당하는 정보를 보여줌
ex2) 응용
SELECT
OrderDate,
CONCAT(
CONCAT_WS(
'/',
YEAR(OrderDate), MONTH(OrderDate), DAY(OrderDate)
),
' ',
UPPER(LEFT(DAYNAME(OrderDate), 3))
) AS 'Y/M/D W'
FROM Orders;
OrderDate의 정보에서 년, 월, 일 정보에 사이에 '/'를 붙이고, DAYNAME을 사용해서 영문 요일의 왼쪽에서 3글자만 가져와서 붙인 결과를 'Y/M/D W'로 보여줌
ex3) 비교
SELECT * FROM Orders
WHERE WEEKDAY(OrderDate) = 0;
OrderDate에서 요일 정보가 0(월요일)인 것만 보여줌
4. HOUR, MINIUTE, SECOND
함수 | 설명 |
---|---|
HOUR | 주어진 DATETIME의 시 반환 |
MINUTE | 주어진 DATEDTIME의 분 반환 |
SECOND | 주어진 DATETIME의 초 반환 |
ex1)
SELECT
HOUR(NOW()), MINUTE(NOW()), SECOND(NOW());
NOW를 사용하면 현재 시간이 반환된다.
5. ADDDATE, SUBDATE
함수 | 설명 |
---|---|
ADDDATE, DATE_ADD | 시간/날짜 더하기 |
SUBDATE, DATE_SUB | 시간/날짜 빼기 |
ex1)
SELECT
OrderDate,
ADDDATE(OrderDate, INTERVAL 1 YEAR),
ADDDATE(OrderDate, INTERVAL -2 MONTH),
ADDDATE(OrderDate, INTERVAL 3 WEEK),
ADDDATE(OrderDate, INTERVAL -4 DAY),
ADDDATE(OrderDate, INTERVAL -5 MINUTE)
FROM Orders;
6. DATEDIFF, TIMEDIFF
함수 | 설명 |
---|---|
DATEDIFF | 두 시간/날짜 간 일수차 |
TIMEDIFF | 두 시간/날짜 간 시간차 |
ex1)
SELECT
OrderDate,
NOW(),
DATEDIFF(OrderDate, NOW())
FROM Orders;
OrderDate - NOW() 를 한 일 수가 표시된다.
ex2)
SELECT TIMEDIFF('2021-06-21 15:20:35', '2021-06-20 16:34:41');
2021-06-21 15:20:35 - 2021-06-20 16:34:41 를 한 초가 표시 된다.
7. LAST_DAY
함수 | 설명 |
---|---|
LAST_DAY | 해당 달의 마지막 날짜 |
ex1)
SELECT OrderDate,
LAST_DAY(OrderDate)
FROM Orders;
8. DATE_FORMAT
함수 | 설명 |
---|---|
DATE_FORMAT | 시간/날짜를 지정한 형식으로 반환 |
함수 | 설명 |
---|---|
%Y | 년도 4자리 |
%y | 년도 2자리 |
%M | 월 영문 |
%m | 월 숫자 |
%D | 일 영문(1st, 2nd, 3rd...) |
%d, %e | 일 숫자 (01 ~31) |
%T | hh : mm : ss |
%r | hh : mm : ss AM/PM |
%H, %k | 시 (~23) |
%H, %l | 시 (~12) |
%i | 분 |
%S, %s | 초 |
%p | AM/PM |
ex1)
SELECT
DATE_FORMAT(NOW(), '%M %D, %Y %T'),
DATE_FORMAT(NOW(), '%y-%m-%d %h:%i"%s %p'),
DATE_FORMAT(NOW(), '%Y년 %md월 %d일 %p %h시 %i분 %s초');
현재 날짜와 시간을 내가 원하는 표기법 대로 나타낼 수 있다.
기타함수
1.if
함수 | 설명 |
---|---|
IF(조건, T,F) | 조건이 참이라면 T,거짓이면 F 반환 |
ex1)
SELECT IF (1 > 2, '1는 2보다 크다.', '1은 2보다 작다.');
2.CASE
함수 | 설명 |
---|---|
CASE WHEN 조건a THEN b ELSE c | 조건a에 해당하면 b를 반환, 그렇치 않으면 c를 반환한다. |
ex1)
SELECT
CASE
WHEN -1 > 0 THEN '-1은 양수다.'
WHEN -1 = 0 THEN '-1은 0이다.'
ELSE '-1은 음수다.'
END;
3.IFNULL
함수 | 설명 |
---|---|
IFNULL(A,B) | A가 NULL일 때 B 출력 |
ex1)
SELECT
IFNULL('A', 'B'),
IFNULL(NULL, 'B');
Author And Source
이 문제에 관하여(DB. MySQL 4 시간/날짜 관련 및 기타함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jinzza456/DB.-MySQL-4-시간날짜-관련-및-기타함수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)