본문 바로가기

- DB

[Oracle, MySQL] 시간 계산

반응형

1. 현재시간
- MySQL
    NOW()     : 쿼리가 실행되는 시간의 값
    SYSDATE() : 해당 함수가 호출되는 시간의 값


- ORACLE
    SYSDATE   : 시스템의 현재 날짜/시간
    CURRENT_DATE : 세션별 시간대(TIME_ZONE)를 기준으로 한 날짜/현재 시간

 

2. 시간 형식
- MySQL
    SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s')
    년 : %Y = 2020, %y = 20
    월 : %m = 04,   %M = April
    일 : %d = 10,   %D = 10th
    시 : %H = 13,   %h = 01 (am/pm 구분 없이 출력)
    분 : %i = 40
    초 : %s = 20

- ORACLE
    SELECT TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss')
    년 : YYYY = 2020, YY = 20
    월, 일, 시, 분, 초는 대소문자 동일

 

3. 날짜 +/-

- MySQL

DATE_ADD(NOW(), INTERVAL 1 YEAR), -- 1년 뒤
DATE_SUB(NOW(),  INTERVAL 1 YEAR), -- 1년 전
DATE_ADD(NOW(), INTERVAL 1 MONTH), -- 1달 뒤
DATE_SUB(NOW(),  INTERVAL 1 MONTH), -- 1달 전
DATE_ADD(NOW(), INTERVAL 1 DAY), -- 1일 뒤
DATE_SUB(NOW(),  INTERVAL 1 DAY), -- 1일 전
DATE_ADD(NOW(), INTERVAL 1 HOUR), -- 1시간 뒤
DATE_SUB(NOW(),  INTERVAL 1 HOUR), -- 1시간 전
DATE_ADD(NOW(), INTERVAL 1 MINUTE), -- 1분 뒤
DATE_SUB(NOW(),  INTERVAL 1 MINUTE), -- 1분 전
DATE_ADD(NOW(), INTERVAL 1 SECOND), -- 1초 뒤
DATE_SUB(NOW(),  INTERVAL 1 SECOND) -- 1초 전

 

- ORACLE

년/월 TO_CHAR(ADD_MONTHS(SYSDATE, +12), 'yyyy-mm-dd hh24:mi:ss'), -- 1년 뒤
TO_CHAR(ADD_MONTHS(SYSDATE, -12),  'yyyy-mm-dd hh24:mi:ss'), -- 1년 전
TO_CHAR(SYSDATE + 1, 'yyyy-mm-dd hh24:mi:ss'), -- 1일 뒤
TO_CHAR(SYSDATE - 1,  'yyyy-mm-dd hh24:mi:ss'), -- 1일 전
TO_CHAR(SYSDATE + 1/24, 'yyyy-mm-dd hh24:mi:ss'), -- 1시간 뒤
TO_CHAR(SYSDATE - 1/24,  'yyyy-mm-dd hh24:mi:ss'), -- 1시간 전
TO_CHAR(SYSDATE + 1/24/60, 'yyyy-mm-dd hh24:mi:ss'), -- 1분 뒤
TO_CHAR(SYSDATE - 1/24/60,  'yyyy-mm-dd hh24:mi:ss'), -- 1분 전
TO_CHAR(SYSDATE + 1/24/60/60, 'yyyy-mm-dd hh24:mi:ss')  -- 1초 뒤
TO_CHAR(SYSDATE - 1/24/60/60,  'yyyy-mm-dd hh24:mi:ss')  -- 1초 전

 

4. 특정시간에서 +/-
- MySQL
    DATE_ADD(DATE_FORMAT('2017-10-08 18:00:00', '%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE),
    DATE_SUB(DATE_FORMAT('2017-10-08 18:00:00', '%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE)

- Oracle
    TO_DATE('2017-10-08 18:00:00', 'yyyy-mm-dd hh24:mi:ss') + 1/24/60,
    TO_DATE('2017-10-08 18:00:00', 'yyyy-mm-dd hh24:mi:ss') - 1/24/60

 

5. 특정시간의 시간차
- MySQL
    TIMESTAMPDIFF(SECOND, DATE_FORMAT('2017-10-08 18:00:00', '%Y-%m-%d %H:%i:%s'), NOW()),
    TIMESTAMPDIFF(MINUTE,  DATE_FORMAT('2017-10-08 18:00:00', '%Y-%m-%d %H:%i:%s'), NOW()), 
    TIMESTAMPDIFF(HOUR,    DATE_FORMAT('2017-10-08 18:00:00', '%Y-%m-%d %H:%i:%s'),  NOW()), 
    TIMESTAMPDIFF(DAY,       DATE_FORMAT('2017-10-08 18:00:00', '%Y-%m-%d %H:%i:%s'), NOW()),   

    TIMESTAMPDIFF(MONTH,  DATE_FORMAT('2017-10-08 18:00:00', '%Y-%m-%d %H:%i:%s'), NOW()),
    TIMESTAMPDIFF(YEAR,      DATE_FORMAT('2017-10-08 18:00:00', '%Y-%m-%d %H:%i:%s'), NOW())
    
- Oracle
    CURRENT_TIMESTAMP - TIMESTAMP '2017-10-08 18:00:00',
    SYSTIMESTAMP          - TIMESTAMP '2017-10-08 18:00:00'

반응형

'- DB' 카테고리의 다른 글

[Oracle, MySQL, MSSQL] PROCEDURE  (0) 2020.07.14
[MySQL] int(11), ZEROFILL  (0) 2020.07.14
[MyBatis] #, $ 차이  (0) 2020.06.23
[MySQL] Incorrect string value  (0) 2020.06.15
[Oracle] ORA-12518: TNS:listener could not hand off client connection  (0) 2020.04.07