SQL 첫걸음 - 3장 날짜 연산(5/6)

2020-11-01

1. SQL에서의 날짜

시스템 날짜 확인

CURRENT_TIMESTAMP 라는 긴 이름의 함수로 실행했을 때를 기준으로 시간을 표시.(다른 함수와 달리 인수를 지정할 필요없음)

cf) MySQL 에서 NOW()함수의 결과도 CURRENT_TIMESTAMP와 동일

99D2E8355B87305513

CURRENT_TIMESTAMP

표준 SQL로 규정되있는 함수.

Oracle에서는 SYSDATE 함수, SQL Server에서는 GETDATE함수를 사용해도 시스템 날짜를 확인 가능하지만 표준화 전 구현된 함수인 만큼 사용하지 않는 편이 나음.

날짜 서식

날짜를 표기하는 방식이 다양하여 대부분의 데이터 베이스 제품은 날짜 데이터의 서식을 임의로 지정, 변환할 수 있는 함수를 지원

Oracle

문자열 데이터를 서식에 맞춰 날짜형 데이터로 변환.

SELECT  TO_DATE('2014/01/25' , 'YYYY/MM/DD')

반대로 날짜형 데이터를 서식에 맞춰 변환해 문자열 데이터로 출력.

SELECT TO_CHAR(SYSDATE, 'YYYYMM')

MySQL

문자열 데이터를 날짜형 데이터로 변환

SELECT STR_TO_DATE('2018-01-01','%Y-%m-%d')

반대로 날짜형 데이터를 서식에 맞춰 변환해 문자열 데이터로 출력.

SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %T')

2. 날짜의 덧셈과 뺄셈

날짜시간형 데이터는 기간형 수치데이터와 덧셈 및 뺄셈을 할 수 있음.

ex) 특정일로부터 1일 후를 계산하고 싶다면 a + 1 DAY라는 식으로 계산. 1일전이라면 a - 1 DAY

SELECT CURRENT_DATE + INTERVAL 1 DAY;  

99BF723A5B87308210

CURRENT_DATE는 시스템날짜의 날짜만 확인하는 함수.

INTERVAL 1 DAY는 ‘1일 후’라는 의미의 기간형 상수. (기간형 상수의 기술방법은 디비마다 조금씩 다름)

날짜형 간의 뺄셈

Oracle : SELECT TO_DATE(‘2018-03-23 22:10:00’,’YYYY-MM-DD HH24:MI:SS’)

TO_DATE(‘2017-12-30 10:29:00’,’YYYY-MM-DD HH24:MI:SS’) FROM DUAL

MySQL : DATEDIFF(‘2014-02-28’,’2014-01-01’)

출처 : https://smilejh.tistory.com/