Date(날짜 & 시간데이터 다루기)
Last updated
Last updated
이번 시간은 날짜, 시간 다루는 법을 알아봅시다.
우선 테스트용 DATE_TB 를 만들어 보겠습니다.
날짜 컬럼만 만들고 데이터 타입은 TIMESTAMP로 하겠습니다.
Oracle은 DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE 이거 3개 다 날짜 + 시간 저장해주는데
TIMESTAMP는 날짜 + 시간(밀리초까지) 저장해줍니다.
TIMESTAMP WITH TIME ZONE 쓰면 날짜 + 시간(밀리초까지) + timezone도 함께 저장해줌
이렇게 SQL문으로 채울 수도 있고 DBeaver 의 GUI 기능으로 데이터를 넣을 수 있습니다.
blog 테이블을 만들고 csv 파일을 이용해 데이터를 넣어봅시다.
원하는 날짜를 가져오려면 그냥 문자,숫자 다루듯이 필터링을 주면 됩니다.
등호, 부등호 사용해서 원하는 TIMESTAMP 자료를 가져올 수 있습니다.
Q. 2022년 3월 10일이 찍혀있는 모든 행을 가져오고 싶으면 어떻게 해야 할까요?
이러면 2022년 3월 10일 날짜를 가진 모든 행을 찾아줍니다.
Q. 2022년 3월 10일부터 현재 시간까지 발행된 글들만 출력하고 싶으면?
이렇게만 해도 될 것 같은데
근데 TIMESTAMP 컬럼엔 언제나 미래의 날짜시간도 저장할 수 있습니다.
그래서 미래 시간이 기록되어있으면 그것도 출력되는 불상사가 생길 수 있어서
2022년 3월 10일 ~ 현재시간이라고 정확히 조건을 주는게 좋습니다.
🎈 ORACLE에서 SYSDATE는 DATE 타입이므로 TO_CHAR 함수로 형변환이 필요하다.
연도를 뒤에 2글자만 표시하기
연도를 전체 표시하기
한글 년 월일 표기하기
시간먼저 표시하기
✨ 실습. csv 파일을 이용해 login_record 테이블을 만들어 봅시다.
해당 테이블은 어떤 사이트 유저의 이름, 이메일, 9월부터 11월까지의 마지막 접속시간이
저장된 테이블입니다.
Q1. 2022년 11월의 월간 액티브 유저 (MAU) 수를 구해보십시오.
월간 액티브 유저는 특정 월에 최소 1회 접속한 유저의 수를 의미합니다.
답으로 163명이 나오면 잘한 것임
Q2. 날짜시간을 조작하고 싶습니다.
현재 테이블의 모든 날짜시간에 1년을 더해서 출력하고 싶으면 어떻게할까요?
Q3. 9월의 짝수일에 해당하는 행만 출력해보고 싶은데 어떻게할까요?
9월12일, 9월14일 이런 날짜를 가진 행들만 출력되면 됩니다.