반응형
출처 : mariadb.com/kb/en/date-time-functions/
# 현재 시간 관련
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 |