Study/DB

MariaDB (MySQL) 자주 쓰는 날짜 함수 및 포맷

LoonyHyun 2020. 12. 8. 13:32
반응형

출처 : mariadb.com/kb/en/date-time-functions/

 

Date & Time Functions

 

mariadb.com

# 현재 시간 관련

 

CURDATE : 현재 날짜를 반환

쿼리 : SELECT CURDATE()
결과 : 2020-12-08
> YYYY-MM-DD || YYYYMMDD (시간 반환 안함)

CURTIME : 현재 시간을 반환

쿼리 : SELECT CURTIME()
결과 : 13:01:10
> HH:MM:SS || HHMMSS

NOW, SYSDATE : 현재 날짜 및 시간을 반환

쿼리 : SELECT NOW(), SYSDATE()
결과 : 2020-12-08 13:11:01 | 2020-12-08 13:11:01
> YYYY-MM-DD HH:mm:SS || YYYYMMDDHHmmSS

UNIX_TIMESTAMP : UTC 시간을 초로 반환.

쿼리 : SELECT UNIX_TIMESTAMP()
결과 : 1607400000

FROM_UNIXTIME : UTC 시간을 날짜 형식으로 변환.

쿼리 : SELECT FROM_UNIXTIME(0)
결과 : 1970-01-01 09:00:00
----------------------------------
쿼리 : SELECT FROM_UNIXTIME(1607400000)
결과 : 2020-12-08 13:00:00

 

# 날짜 포맷 관련

DATE_FORMAT : 날짜를 포맷 형식의 문자열로 변환

쿼리 : SELECT DATE_FORMAT('2020-12-08 13:01:00', '%H:%i:%s')
결과 : 13:01:00
------------------------------------------------------------
쿼리 : SELECT DATE_FORMAT('2020-12-08 13:01:00', '%y-%m-%d')
결과 : 20-12-08
------------------------------------------------------------
쿼리 : SELECT DATE_FORMAT('2020-12-08 13:01:00', '%y-%m-%d %H:%i:%s')
결과 : 20-12-08 13:01:00

STR_TO_DATE : 포맷 형식의 문자열을 날짜로 변환

쿼리 : SELECT STR_TO_DATE('2020-12-08', '%y-%m-%d')
결과 : 2020-12-08
------------------------------------------------------------
쿼리 : SELECT STR_TO_DATE('December 08, 2020', '%M %d, %Y')
결과 : 2020-12-08
------------------------------------------------------------
쿼리 : SELECT STR_TO_DATE('Dec 08, 2020', '%M %d, %Y')
결과 : 2020-12-08

 

# 날짜 계산 관련

DATE_ADD, ADDDATE : 날짜 더하기

SELECT ADDDATE('2008-01-02', INTERVAL 31 DAY);
+-------------+
| 2008-02-02  |
+-------------+
SELECT ADDDATE('2008-01-02', 31);
+-------------+
| 2008-02-02  |
+-------------+
SELECT d, ADDDATE(d, INTERVAL 10 HOUR) from t1;
+---------------------+------------------------------+
| d                   | ADDDATE(d, INTERVAL 10 HOUR) |
+---------------------+------------------------------+
| 2007-01-30 21:31:07 | 2007-01-31 07:31:07          |
| 1983-10-15 06:42:51 | 1983-10-15 16:42:51          |
| 2004-10-07 11:19:34 | 2004-10-07 21:19:34          |
+---------------------+------------------------------+

DATE_SUB : 날짜 빼기

SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
+------------+
| 1997-12-02 |
+------------+
SELECT DATE_SUB('2005-01-01 00:00:00', INTERVAL '1 1:1:1' DAY_SECOND);
+----------------------+
| 2004-12-30 22:58:59  |
+----------------------+

ADDTIME : 시간 더하기

SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002');
+-----------------------------+
| 2008-01-02 01:01:01.000001  |
+-----------------------------+
SELECT ADDTIME('01:00:00.999999', '02:00:00.999998');
+------------------+
| 03:00:01.999997  |
+------------------+

DATEDIFF : 날짜 차이 구하기

SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
+----+
|  1 |
+----+
SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31');
+------+
|  -31 |
+------+

TIMESTAMPDIFF : 시간 차이 구하기

SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
+----+
|  3 |
+----+
SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');
+----+
| -1 |
+----+
SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');
+--------+
| 128885 |
+--------+

INTERVAL 에 쓸 수 있는 값

SECOND
MINUTE
HOUR
DAY
MONTH
YEAR

# 기타

DAYNAME : 일 이름 구하기

DAYOFMONTH : 월의 몇번째 일 구하기 ( 1 ~ 31 )

DAYOFWEEK : 주의 몇번째 일 구하기 ( 1 ~ 7 )

DAYOFYEAR : 년의 몇번재 일 구하기 ( 1 ~ 366 )

LAST_DAY : 해당 날짜 월의 마지막 일자 구하기

SELECT LAST_DAY('2003-02-05');
+------------------------+
| 2003-02-28             |
+------------------------+
SELECT LAST_DAY('2004-02-05');
+------------------------+
| 2004-02-29             |
+------------------------+
SELECT LAST_DAY('2004-01-01 01:01:01');
+---------------------------------+
| 2004-01-31                      |
+---------------------------------+
SELECT LAST_DAY('2003-03-32');
+------------------------+
| NULL                   |
+------------------------+

 

 

'Study > DB' 카테고리의 다른 글

[Oracle] 통계정보 생성  (0) 2021.01.11
[Oracle] Job 등록 / 스케쥴링  (0) 2020.12.23
MariaDB (MySQL) 날짜 포맷  (0) 2020.12.08
Maria DB (MySql) - Merge Insert Update  (0) 2017.09.28
Oracle Procedure Or Function 확인  (0) 2016.08.09