SQL 첫걸음 - 3장 날짜 연산(5/6)
1. SQL에서의 날짜
시스템 날짜 확인
CURRENT_TIMESTAMP 라는 긴 이름의 함수로 실행했을 때를 기준으로 시간을 표시.(다른 함수와 달리 인수를 지정할 필요없음)
cf) MySQL 에서 NOW()함수의 결과도 CURRENT_TIMESTAMP와 동일
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;
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/