본문 바로가기
MYSQL

[내장 함수] 날짜형 함수

by 융디's 2024. 5. 5.
728x90
[내장 함수] 날짜형 함수

[내장 함수] 날짜형 함수

@2024.05.02

DATE 함수

현재 날짜와 시간 출력

  • NOW()
    • 현재 시스템의 설정되어 있는 날짜와 시간을 출력
  • SYSDATE()
    • 시스템의 영향을 받지 않고 UTC 기준으로 현재 날짜와 시간 출력
  • CURRENT_TIMESTAMP()
    • 현재 시스템의 설정되어 있는 날짜와 시간을 반환하며, 시간대 설정에 영향을 받는다.
SELECT NOW(); -- 2024-05-02 13:45:30 (현재 시스템의 시간대 기준)
SELECT SYSDATE(); -- 2024-05-02 04:45:30 (UTC 기준)
SELECT CURRENT_TIMESTAMP(); -- 2024-05-02 13:45:30 (시스템 시간대 설정 기준)

현재 날짜 출력

  • 현재 날짜를 필요할 때 주로 사용하며, 시간 정보는 필요하지 않고 날짜 정보만 필요할 때 사용
  • 두 함수는 이름만 다를 뿐 거의 같은 함수
  • CURDATE()
    • 현재 날짜를 반환하며, 시간 부분은 없고 ‘YYYY-MM-DD’ 형식 문자열로 출력
  • CURRENT_DATE()
    • 현재 날짜를 반환하며, 시간은 없고 ‘YYYY-MM-DD’ 형식의 문자열로 출력
SELECT CURDATE(); -- '2024-05-02'

SELECT CURRENT_DATE(); -- '2024-05-02'

현재 시간 출력

  • 두 함수는 이름만 다를 뿐 거의 같은 함수
  • CURTIME()
    • 현재 시간을 반환하며, 시간 부분만 있고 ‘HH:MM:SS’ 형식의 문자열로 출력
  • CURRENT_TIME()
    • 현재 시간을 반환하며, 시간 부분만 있고 ‘HH:MM:SS’ 형식의 문자열로 출력
SELECT CURTIME(); -- '13:45:30'

SELECT CURRENT_TIME(); -- '13:45:30'

날짜에서 기준값만큼 덧셈

  • 두 함수는 이름만 다를 뿐 거의 같은 함수
  • 기준 값 : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
  • DATE_ADD(기준이 되는 날짜, INTERVAL 더할 값 기준값)
    • 첫 번째 매개변수에 두 번째 매개변수로 지정한 시간 간격을 더한 값 출력
  • ADDDATE(기준이 되는 날짜, INTERVAL 더할 값 기준값)
    • 첫 번째 매개변수에 두 번째 매개변수로 지정한 시간 간격을 더한 값 출력
SELECT DATE_ADD('2024-05-06', INTERVAL 7 DAY); -- '2024-05-13'

SELECT ADDDATE('2024-05-06', INTERVAL 1 MONTH); -- '2024-06-06'

날짜에서 기준 값만큼 뺄셈

  • 두 함수는 이름만 다를 뿐 거의 같은 함수
  • 기준 값 : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
  • DATE_SUB(기준이 되는 날짜, INTERVAL 뺄 값 기준값)
    • 첫 번째 매개변수에서 두 번째 매개변수로 지정한 시간 간격을 뺀 값을 출력
  • SUBDATE(기준이 되는 날짜, INTERVAL 뺼 값 기준 값)
    • 첫 번째 매개변수에서 두 번째 매개변수로 지정한 시간 간격을 뺀 값을 출력
SELECT DATE_SUB('2024-05-13', INTERVAL 7 DAY); -- '2024-05-06'

SELECT SUBDATE('2024-06-06', INTERVAL 1 MONTH); -- '2024-05-06'

날짜 포맷

  • YEAR(날짜)
    • 날짜의 연도 출력
    SELECT YEAR('2024-05-02'); -- 2024
  • MONTH(날짜)
    • 날짜의 월 출력
    SELECT MONTH('2024-05-02'); -- 5
  • MONTHNAME(날짜)
    • 날짜의 월을 영어로 출력
    SELECT MONTHNAME('2024-05-02'); -- May
  • DAYNAME(날짜)
    • 날짜의 요일을 영어로 출력
    SELECT DAYNAME('2024-05-02'); -- Thursday
  • DAYOFYEAR(날짜)
    • 주어진 날짜가 해당 연도에서 몇 번째 날인지 출력
    ELECT DAYOFYEAR('2024-05-02'); -- 123
  • DAYOFMONTH(날짜)
    • 날짜의 월별 일자를 출력
    SELECT DAYOFMONTH('2024-05-02'); -- 2
  • DAYOFWEEK(날짜)
    • 날짜의 주별 일자 출력 (월요일 : 1, 일요일 : 0)
    SELECT DAYOFWEEK('2024-05-02'); -- 목요일이므로 4 출력
  • WEEKDAY(날짜)
    • 날짜의 주별 일자를 출력 (월요일 : 0, 일요일 : 6)
    SELECT WEEKDAY('2024-05-02'); -- 목요일이므로 3 출력
  • WEEK(날짜)
    • 주어진 날짜가 해당 연도에 몇 번째 주에 해당하는지 출력
    SELECT WEEK('2024-05-02'); -- 18
  • FROM_DAY(날 수)
    • 00년 00월 00일부터 일정한 날 수만큼 경과한 날의 날짜 출력
    SELECT FROM_DAYS(737895); -- '2024-05-02'
  • TO_DAYS(날짜)
    • 00년 00월 00일부터 주어진 날짜까지의 일자 수 출력
    SELECT TO_DAYS('2024-05-02'); -- 737895
  • PERIOD_DIFF(p1, p2)
    • YYMM이나 YYYYMM 형식으로 표현된 p1과 p2의 차이를 월 단위로 반환
    SELECT PERIOD_DIFF(202405, 202401); -- 4
  • DATE_FORMAT(날짜, ‘형식’)
    • 날짜를 형식에 맞게 출력
--  현재 날짜를 '요일 월 연도' 형식으로 출력
SELECT DATA_FROMAT(CURDATE(),'%w %M %y'); -- 2 May 24

-- 현재 날짜를 '연도. 월. 일' 형식으로 출력
SELECT DATA_FROMAT(CURDATE(),'%Y. %m. %d'); -- 2024.05.02

-- 연도만 출력
SELECT DATE_FORMAT('2024-05-06', '%Y'); -- '2024'

-- 월을 2자리 숫자로 출력
SELECT DATE_FORMAT('2024-05-06', '%m'); -- '05'

-- 월을 영어로 출력
SELECT DATE_FORMAT('2024-05-06', '%M'); -- 'May'

-- 요일을 영어로 출력
SELECT DATE_FORMAT('2024-05-06', '%W'); -- 'Monday'

-- 월별 일자를 2자리 숫자로 출력
SELECT DATE_FORMAT('2024-05-06', '%d'); -- '06'

-- 일년 중 몇 번째 날인지 출력
SELECT DATE_FORMAT('2024-05-06', '%j'); -- '127'

-- 일년 중 몇 번째 주인지 출력
SELECT DATE_FORMAT('2024-05-06', '%U'); -- '18'

-- 날짜를 'YYYY-MM-DD' 형식으로 출력
SELECT DATE_FORMAT('2024-05-06', '%Y-%m-%d'); -- '2024-05-06'

728x90

'MYSQL' 카테고리의 다른 글

형 변환  (0) 2024.05.05
[내장 함수] 집계 함수  (0) 2024.05.05
[내장 함수] 숫자형 함수  (0) 2024.05.05
[내장 함수] 문자형 함수  (0) 2024.05.05
SELECT절  (0) 2024.05.05