[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_DATE | CURDATE()의 별명 |
CURRENT_TIME() , CURRENT_TIME | CURTIME()의 별명 |
CURRENT_TIMESTAMP() , CURRENT_TIMESTAMP | NOW()의 별명 |
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() , LOCALTIME | NOW()의 별명 |
LOCALTIMESTAMP , LOCALTIMESTAMP() | 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 |
최신 댓글