저자 : 아사이 아츠시
출판 : 한빛미디어
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')
'Study > DB' 카테고리의 다른 글
[SQL 첫걸음] 4장.데이터의 추가,삭제,갱신- 16.행 추가하기(INSERT) (0) | 2018.08.30 |
---|---|
[SQL 첫걸음] 3장.정렬과 연산 - 15.CASE 문으로 데이터 변환하기 (0) | 2018.08.30 |
[SQL 첫걸음] 3장.정렬과 연산 - 13.문자열 연산 (0) | 2018.08.30 |
[SQL 첫걸음] 3장.정렬과 연산 - 12.수치 연산 (0) | 2018.08.29 |
[SQL 첫걸음] 3장.정렬과 연산 - 11.결과 행 제한하기(LIMIT) (1) | 2018.08.28 |