[MySql]날짜 관련 함수

함수설명
ADDDATE()날짜 더하기

mysql> SELECT DATE_ADD(‘2008-01-02’, INTERVAL 31 DAY);
-> ‘2008-02-02’
mysql> SELECT ADDDATE(‘2008-01-02’, INTERVAL 31 DAY);
-> ‘2008-02-02’
ADDTIME()시간 더하기

mysql> SELECT ADDTIME(‘2007-12-31 23:59:59.999999’, ‘1 1:1:1.000002’);
-> ‘2008-01-02 01:01:01.000001’
mysql> SELECT ADDTIME(’01:00:00.999999′, ’02:00:00.999998′);
-> ’03:00:01.999997′
CONVERT_TZ()타임존 변경

mysql> SELECT CONVERT_TZ(‘2004-01-01 12:00:00′,’GMT’,’MET’);
-> ‘2004-01-01 13:00:00’
mysql> SELECT CONVERT_TZ(‘2004-01-01 12:00:00′,’+00:00′,’+10:00’);
-> ‘2004-01-01 22:00:00’
CURDATE()현재날짜 조회
CURRENT_DATE()CURRENT_DATECURDATE()의 별명
CURRENT_TIME()CURRENT_TIMECURTIME()의 별명
CURRENT_TIMESTAMP()CURRENT_TIMESTAMPNOW()의 별명
CURTIME()현재시간 조회
DATE()날짜 또는 일시에서 날짜만 추출함

mysql> SELECT DATE(‘2003-12-31 01:02:03’);
-> ‘2003-12-31’
DATE_ADD()날짜 더하기

mysql> SELECT DATE_ADD(‘2018-05-01’,INTERVAL 1 DAY);
-> ‘2018-05-02’
mysql> SELECT DATE_SUB(‘2018-05-01’,INTERVAL 1 YEAR);
-> ‘2017-05-01’
mysql> SELECT DATE_ADD(‘2020-12-31 23:59:59’, INTERVAL 1 SECOND);
-> ‘2021-01-01 00:00:00’
mysql> SELECT DATE_ADD(‘2018-12-31 23:59:59’, INTERVAL 1 DAY);
-> ‘2019-01-01 23:59:59’
mysql> SELECT DATE_ADD(‘2100-12-31 23:59:59’, INTERVAL ‘1:1’ MINUTE_SECOND);
-> ‘2101-01-01 00:01:00’
mysql> SELECT DATE_SUB(‘2025-01-01 00:00:00’, INTERVAL ‘1 1:1:1’ DAY_SECOND);
-> ‘2024-12-30 22:58:59’
mysql> SELECT DATE_ADD(‘1900-01-01 00:00:00’, INTERVAL ‘-1 10’ DAY_HOUR); -> ‘1899-12-30 14:00:00’
mysql> SELECT DATE_SUB(‘1998-01-02’, INTERVAL 31 DAY);
-> ‘1997-12-02’
mysql> SELECT DATE_ADD(‘1992-12-31 23:59:59.000002’, INTERVAL ‘1.999999’ SECOND_MICROSECOND);
-> ‘1993-01-01 00:00:01.000001’
DATE_FORMAT()지정한 포멧으로 일시조회

mysql> SELECT DATE_FORMAT(‘2009-10-04 22:23:00’, ‘%W %M %Y’);
-> ‘Sunday October 2009’
mysql> SELECT DATE_FORMAT(‘2007-10-04 22:23:00’, ‘%H:%i:%s’);
-> ’22:23:00′
mysql> SELECT DATE_FORMAT(‘1900-10-04 22:23:00’, ‘%D %y %a %d %m %b %j’);
-> ‘4th 00 Thu 04 10 Oct 277’
mysql> SELECT DATE_FORMAT(‘1997-10-04 22:23:00’, ‘%H %k %I %r %T %S %w’);
-> ’22 22 10 10:23:00 PM 22:23:00 00 6′
mysql> SELECT DATE_FORMAT(‘1999-01-01’, ‘%X %V’);
-> ‘1998 52’
mysql> SELECT DATE_FORMAT(‘2006-06-00’, ‘%d’);
-> ’00’
DATE_SUB()날짜 빼기

date_add() 예제 참조
DATEDIFF()두 날짜간 빼기

mysql> SELECT DATEDIFF(‘2007-12-31 23:59:59′,’2007-12-30’);
-> 1
mysql> SELECT DATEDIFF(‘2010-11-30 23:59:59′,’2010-12-31’);
-> -31
DAY()DAYOFMONTH()의 별명
DAYNAME()요일 조회

mysql> SELECT DAYNAME(‘2007-02-03’);
-> ‘Saturday’
DAYOFMONTH()월 조회 (0-31)

mysql> SELECT DAYOFMONTH(‘2007-02-03’);
-> 3
DAYOFWEEK()요일의 순번 조회(1 = Sunday, 2 = Monday, …, 7 = Saturday).

mysql> SELECT DAYOFWEEK(‘2007-02-03’);
-> 7
DAYOFYEAR()해당년도 중 몇번째 일자인지 조회 (1-366)

mysql> SELECT DAYOFYEAR(‘2007-02-03’);
-> 34
EXTRACT()일시에서 지정한 날짜단위 조회

mysql> SELECT EXTRACT(YEAR FROM ‘2019-07-02’);
-> 2019
mysql> SELECT EXTRACT(YEAR_MONTH FROM ‘2019-07-02 01:02:03’);
-> 201907
mysql> SELECT EXTRACT(DAY_MINUTE FROM ‘2019-07-02 01:02:03’);
-> 20102
mysql> SELECT EXTRACT(MICROSECOND FROM ‘2003-01-02 10:30:00.000123’);
-> 123
FROM_DAYS()지정한 정수에서 날짜로 변환

mysql> SELECT FROM_DAYS(730669);
-> ‘2000-07-03’
FROM_UNIXTIME()Unix 형태의 일시를 mysql date타입으로 표시

mysql> SELECT FROM_UNIXTIME(1447430881);
-> ‘2015-11-13 10:08:01’
mysql> SELECT FROM_UNIXTIME(1447430881) + 0;
-> 20151113100801
mysql> SELECT FROM_UNIXTIME(1447430881, ‘%Y %D %M %h:%i:%s %x’);
-> ‘2015 13th November 10:08:01 2015’
GET_FORMAT()지정한 국가코드로 날짜포맷 반환


mysql> SELECT DATE_FORMAT(‘2003-10-03′,GET_FORMAT(DATE,’EUR’));
-> ‘03.10.2003’
mysql> SELECT STR_TO_DATE(‘10.31.2003′,GET_FORMAT(DATE,’USA’));
-> ‘2003-10-31’
HOUR()시간(time)에서 시각(hour)만 추출

mysql> SELECT HOUR(’10:05:03′);
-> 10
mysql> SELECT HOUR(‘272:59:59’);
-> 272
LAST_DAY지정한 날짜에 해당하는 월의 마지막 일자 추출

mysql> SELECT LAST_DAY(‘2003-02-05’);
-> ‘2003-02-28’
mysql> SELECT LAST_DAY(‘2004-02-05’);
-> ‘2004-02-29’
mysql> SELECT LAST_DAY(‘2004-01-01 01:01:01’);
-> ‘2004-01-31’
mysql> SELECT LAST_DAY(‘2003-03-32’);
-> NULL
LOCALTIME()LOCALTIMENOW()의 별명
LOCALTIMESTAMPLOCALTIMESTAMP()NOW()의 별명
MAKEDATE()주어진 “n년도”, “n번째 일”을 이용해 날자 생성

mysql> SELECT MAKEDATE(2011,31), MAKEDATE(2011,32);
-> ‘2011-01-31’, ‘2011-02-01’
mysql> SELECT MAKEDATE(2011,365), MAKEDATE(2014,365);
-> ‘2011-12-31’, ‘2014-12-31’
mysql> SELECT MAKEDATE(2011,0);
-> NULL
MAKETIME()주어진 “시”, “분”, “초”를 이용해 시간생성

mysql> SELECT MAKETIME(12,15,30);
-> ’12:15:30′
MICROSECOND()주어진 시간에서 microsecond 조회(0 ~ 999,999)

mysql> SELECT MICROSECOND(’12:00:00.123456′);
0-> 123456
mysql> SELECT MICROSECOND(‘2019-12-31 23:59:59.000010’);
-> 10
MINUTE()주어진 시간에서 “분” 조회(0 ~ 59)

mysql> SELECT MINUTE(‘2008-02-03 10:05:03’);
-> 5
MONTH()주어진 날짜에서 “월” 조회(1 ~ 12)

mysql> SELECT MONTH(‘2008-02-03’);
-> 2
MONTHNAME()주어질 날짜에서 “월의 full 영문명 조회”

mysql> SELECT MONTHNAME(‘2008-02-03’);
-> ‘February’
NOW()현재일시

mysql> SELECT NOW();
-> ‘2007-12-15 23:50:26’
mysql> SELECT NOW() + 0;
-> 20071215235026.000000
PERIOD_ADD()주어진 “년도-월”에 지정한 “개월” 더하기

mysql> SELECT PERIOD_ADD(200801,2);
-> 200803
PERIOD_DIFF()주어진 “년” 또는 “년월” 사이의 “년” 또는 “개월” 차이

mysql> SELECT period_diff(2023, 2022);
-> 1
mysql> SELECT period_diff(202212, 202201);
-> 11
QUARTER()주어진 날짜의 “분기” 조회

mysql> SELECT QUARTER(‘2008-04-01’);
-> 2
SEC_TO_TIME()주어진 “초”(정수)에서 시간포맷(문자열) 반환

mysql> SELECT SEC_TO_TIME(2378);
-> ’00:39:38′
mysql> SELECT SEC_TO_TIME(2378) + 0;
-> 3938
SECOND()“초” 반환 (0-59)

mysql> SELECT SECOND(’10:05:03′);
-> 3
STR_TO_DATE()주어진 문자열을 날짜/시간(으)로 변환

mysql> SELECT STR_TO_DATE(‘01,5,2013′,’%d,%m,%Y’);
-> ‘2013-05-01’
mysql> SELECT STR_TO_DATE(‘May 1, 2013′,’%M %d,%Y’);
-> ‘2013-05-01’

mysql> SELECT STR_TO_DATE(‘a09:30:17′,’a%h:%i:%s’);
-> ’09:30:17′
mysql> SELECT STR_TO_DATE(‘a09:30:17′,’%h:%i:%s’);
-> NULL
mysql> SELECT STR_TO_DATE(’09:30:17a’,’%h:%i:%s’);
-> ’09:30:17′

mysql> SELECT STR_TO_DATE(‘abc’,’abc’);
-> ‘0000-00-00’
mysql> SELECT STR_TO_DATE(‘9′,’%m’);
-> ‘0000-09-00’
mysql> SELECT STR_TO_DATE(‘9′,’%s’);
-> ’00:00:09′

mysql> SELECT STR_TO_DATE(’00/00/0000′, ‘%m/%d/%Y’);
-> ‘0000-00-00’
mysql> SELECT STR_TO_DATE(’04/31/2004′, ‘%m/%d/%Y’);
-> ‘2004-04-31’
SUBDATE()DATE_SUB()의 별명
SUBTIME()주어진 2개의 일시/시간에서의 빼기

mysql> SELECT SUBTIME(‘2007-12-31 23:59:59.999999′,’1 1:1:1.000002’);
-> ‘2007-12-30 22:58:58.999997’
mysql> SELECT SUBTIME(’01:00:00.999999′, ’02:00:00.999998′);
-> ‘-00:59:59.999999’
SYSDATE()현재 “일시” 반환
now()는 쿼리가 실행된 시점의 “상수”를 반환
sysdate()는 쿼리가 실행된 시점의 “일시”를 각각 반환

mysql> SELECT NOW(), SLEEP(2), NOW();
-> 2006-04-12 13:47:36 | 0 | 2006-04-12 13:47:36

mysql> SELECT SYSDATE(), SLEEP(2), SYSDATE();
-> 2006-04-12 13:47:44 | 0 | 2006-04-12 13:47:46
TIME()주어진 표현식에서 시간 추출

mysql> SELECT TIME(‘2003-12-31 01:02:03’);
-> ’01:02:03′
mysql> SELECT TIME(‘2003-12-31 01:02:03.000123’);
-> ’01:02:03.000123′
TIME_FORMAT()주어진 시간을 주어진 포멧으로 변환

mysql> SELECT TIME_FORMAT(‘100:00:00’, ‘%H %k %h %I %l’);
-> ‘100 100 04 04 4’
TIME_TO_SEC()주어진 시간을 “초”로 합산하여 변환

mysql> SELECT TIME_TO_SEC(’22:23:00′);
-> 80580
mysql> SELECT TIME_TO_SEC(’00:39:38′);
-> 2378
TIMEDIFF()2개의 시간에서 빼기

mysql> SELECT TIMEDIFF(‘2000:01:01 00:00:00’, ‘2000:01:01 00:00:00.000001’);
-> ‘-00:00:00.000001’
mysql> SELECT TIMEDIFF(‘2008-12-31 23:59:59.000001’, ‘2008-12-30 01:01:01.000002’);
-> ’46:58:57.999999′
TIMESTAMP()입력

mysql> SELECT TIMESTAMP(‘2003-12-31’);
-> ‘2003-12-31 00:00:00’
mysql> SELECT TIMESTAMP(‘2003-12-31 12:00:00′,’12:00:00’);
-> ‘2004-01-01 00:00:00’
TIMESTAMPADD()“일시”에 지정한 “단위”로 날짜/시간 더하기

mysql> SELECT TIMESTAMPADD(MINUTE,1,’2003-01-02′);
-> ‘2003-01-02 00:01:00’
mysql> SELECT TIMESTAMPADD(WEEK,1,’2003-01-02′);
-> ‘2003-01-09’
TIMESTAMPDIFF()“일시”에 지정한 “단위”로 날짜/시간 차이 구하기

mysql> SELECT TIMESTAMPDIFF(MONTH,’2003-02-01′,’2003-05-01′);
-> 3
mysql> SELECT TIMESTAMPDIFF(YEAR,’2002-05-01′,’2001-01-01′);
-> -1
mysql> SELECT TIMESTAMPDIFF(MINUTE,’2003-02-01′,’2003-05-01 12:05:55′);
-> 128885
TO_DAYS()주어진 날짜를 “0년”을 기준으로 경과한 “일수” 반환

mysql> SELECT TO_DAYS(950501);
-> 728779
mysql> SELECT TO_DAYS(‘2007-10-07’);
-> 733321

mysql> SELECT TO_DAYS(‘0000-00-00’);
-> NULL
mysql> SELECT TO_DAYS(‘0000-01-01’);
-> 1
TO_SECONDS()주어진 표현식을 “0년”을 기준으로 경과한 “초” 반환

mysql> SELECT TO_SECONDS(950501);
-> 62966505600
mysql> SELECT TO_SECONDS(‘2009-11-29’);
-> 63426672000
mysql> SELECT TO_SECONDS(‘2009-11-29 13:43:32’);
-> 63426721412
mysql> SELECT TO_SECONDS( NOW() );
-> 63426721458
UNIX_TIMESTAMP()Unix형태의 일시로 변환(조회)

mysql> SELECT UNIX_TIMESTAMP();
-> 1447431666
mysql> SELECT UNIX_TIMESTAMP(‘2015-11-13 10:20:19’);
-> 1447431619
mysql> SELECT UNIX_TIMESTAMP(‘2015-11-13 10:20:19.012’);
-> 1447431619.012
UTC_DATE()UTC 형태로 현재일자 반환

mysql> SELECT UTC_DATE(), UTC_DATE() + 0;
-> ‘2003-08-14’, 20030814
UTC_TIME()UTC 형태로 현재시간 반환

mysql> SELECT UTC_TIME(), UTC_TIME() + 0;
-> ’18:07:53′, 180753.000000
UTC_TIMESTAMP()UTC 형태로 현재일시 반환

mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
-> ‘2003-08-14 18:08:04’, 20030814180804.000000
WEEK()주어진 날짜가 “몆 주차”인지 반환, 두번 째 인자는 “주”의 시작요일( 0:일요일, 7:월요일)

mysql> SELECT WEEK(‘2008-02-20’);
-> 7
mysql> SELECT WEEK(‘2008-02-20’,0);
-> 7
mysql> SELECT WEEK(‘2008-02-20’,1);
-> 8
mysql> SELECT WEEK(‘2008-12-31’,1);
-> 53
WEEKDAY()“요일의 인덱스” 반환(0 = 월요일, 1 = 화요일, … 6 = 일요일)

mysql> SELECT WEEKDAY(‘2008-02-03 22:23:00’);
-> 6
mysql> SELECT WEEKDAY(‘2007-11-06’);
-> 1
WEEKOFYEAR()주어진 날짜가 “몇 주차”인지 반환(1-53), WEEK(date, 3)과 같다.

mysql> SELECT WEEKOFYEAR(‘2008-02-20’);
-> 8
mysql> SELECT WEEK(‘2008-02-20’, 3);
-> 8
YEAR()주어진 날짜의 “년도” 반환

mysql> SELECT YEAR(‘1982-01-01’);
-> 1982
YEARWEEK()주어진 날짜의 “년도+주차” 반환

mysql> SELECT YEARWEEK(‘1987-01-01’);
-> 198652

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다