날짜타입은 date 이다.
date 타입의 기본적인 표현방식은 'RR/MM/DD' 으로 나타내어진다.
RR 은 년도의 2자리만 나타내어준다. 50 ~ 99 는 1950 ~ 1999, 00 ~ 49 는 2000 ~ 2049 을 말하는 것이다.
MM 은 월이고, DD 는 일이다.
---------------------현재 시각 구하기 -------------------
SELECT
sysdate -- 24/02/16
, current_date -- 24/02/16
, localtimestamp -- 24/02/16 14:14:03.049000000 (시 분 초까지 나옴)
, current_timestamp -- 24/02/16 14:14:59.263000000 +09:00
, systimestamp -- 24/02/16 14:14:59.263000000 +09:00
FROM
dual;
SELECT
sysdate -- 24/02/16Y
, to_char( sysdate, 'yyyy-mm-dd' ) -- 날짜를 원하는 형식으로 변환
, to_char( sysdate, 'hh24-mi-ss' ) -- 시 / 분 / 초 14-19-12
, to_char( sysdate, 'yyyy-mm-dd hh24:mi:ss' ) --2024-02-16 14:19:12
, to_char( sysdate, 'yyyy/mm/dd hh24:mi:ss' ) --2024/02/16 14:19:12
, to_char( sysdate, 'yyyy-mm-dd AM hh:mi:ss' ) --2024-02-16 02:19:12 오전과 오후를 나타내기 위해 am 또는 pm 입력
FROM
dual;
WHERE TO_CHAR(date_of_birth, 'mm') = '03'; -- 지정된 날짜를 원하는 형식으로 바꾼 뒤 값과 일치시키는 것을 찾는다.
TO_DATE("문자열", "날짜 포맷") -- 날짜 포맷을 지정할 것을 권장
시스템의 설정된 날짜 형식과 일치하지 않은 문자열 값인 경우 오류가 발생할 수 있으니 주의해야 한다.
to_date( '2006-12-31 09:00:00','yyyy-mm-dd hh24:mi:ss')
employees 테이블에 저장된 사원번호가 154인 행에 대해서 hire_date (입사일자) 컬럼의 값을 '2006-12-31 09:00:00'으로 수정(변경)하고자 한다.
UPDATE
employees
SET
hire_date = to_date( '2006-12-31 09:00:00','yyyy-mm-dd hh24:mi:ss')
WHERE
employee_id = 154;
-- 1 행 이(가) 업데이트되었습니다.
/*
WHERE절의 = 는 같다라는 뜻이지만, SET 의 = 는 대입한다는 뜻이다.
날짜 타입에 문자열을 넣는 것이므로 타입변환이 필요하다.
to_date() 를 통해 '2006-12-31 09:00:00' 문자열을
'yyyy-mm-dd AM hh:mi:ss' 모양의 날짜로 바꿔준 뒤 hire_date에 넣어준다.
*/
commit;
-- 커밋 완료
SELECT employee_id AS "사원번호"
, first_name || ' ' || last_name AS "사원명"
, hire_date AS "입사일자"
, to_char( hire_date, 'yyyy-mm-dd AM hh:mi:ss' ) AS "입사일자2"
FROM employees;
-- 154 Nanette Cambrault 06/12/31 2006-12-31 오전 09:00:00 <변경되어 업뎃 됨.
-- employees 테이블에서 입사일자가 2005년 1월 1일부터 2006년 12월 31일까지 입사한 사원들만
-- 사원번호, 사원명, 입사일자를 나타내세요.
SELECT
employee_id AS "사원번호",
first_name || ' ' || last_name AS "사원명",
hire_date AS "입사일자",
to_char(hire_date, 'yyyy-mm-dd hh24:mi:ss') AS "입사일자"
FROM
employees
WHERE
hire_date BETWEEN '05/01/01' AND '07/01/01';
-- 1월 1일 0시 0분 0초보다 작은 걸로 처리하여 12월 31의 모든 시각을 포함시킴.
날짜를 나타낼때 시,분,초 가 없는 년,월,일만 나타내어주면 자동적으로 0시0분0초가 된다. 즉, 자정(그날의 시작)을 뜻한다.
즉 24-01-01부터 24-01-10일까지 나타내고 싶은 경우, 10일이 아닌 11일을 입력해주어야 한다. '24-01-01' 년월일 입력시 자정으로 인식하여 그 이후는 포함시키지 않기 때문이다.