Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 알고리즘
- 채팅서버 설계
- 스프링
- 백준 2630번
- 전문가를 위한 스프링5
- 김영한님
- JPA
- 스파르타코딩클럽 #spartacodingclub #누구나큰일낼수있어
- C++
- 스프링 MVC 2편
- 스프링 핵심원리 기본편
- 타임리프
- 누구나큰일낼수있어
- spartacodingclub
- 1시간 만에 끝내는 직장인 코딩 용어
- 백준 #N과 M(4) #백트래킹
- 스프링 입문을 위한 자바 객체 지향의 원리와 이해
- 백준
- thymeleaf
- 스프링심화반
- 팀300
- 가상 채팅서버
- SQL
- 스프링 시큐리티 구조
- 스파르타코딩클럽
- 백준 1992번 풀이
- 백준 1992번
- 전문가를 위한 스프링
- 자바의 정석 기초편
- 객체지향의 사실과 오해
Archives
- Today
- Total
민우의 코딩노트
[SQL] 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리 2탄 : 시간 함수 본문
Lecture/데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리
[SQL] 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리 2탄 : 시간 함수
미미누 2023. 11. 9. 22:07
https://www.youtube.com/watch?v=u8G5WAS8_hU
본 글은 [SQL] 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리, 을 시청하고 정리한 글입니다.
현재 시각 나타내기
- 오라클SQL (FROM 테이블명 DUAL은 가짜테이블)
SELECT SYSDATE FROM DUAL;
SELECT CURRENT_DATE FROM DUAL;
SELECT CURRENT_TIMESTAMP FROM DUAL;
임팔라SQL
SELECT NOW();
MSSQL
SELECT GETDATE();
CHAR 타입을 시간 유형으로 바꾸는 방법
SELECT STD_MT
, CONCAT(STD_MT, '01') AS 일자1
, TO_TIMESTAMP(STD_MT, '01'), 'yyyyMMdd') AS 일자2
, to_date(CONCAT(STD_MT, '01'), 'yyyyMMdd') AS 일자3
, ADD_MONTHS(TO_TIMESTAMP(CONCAT(STD_MT, '01'), 'yyyyMMdd'), 1) AS 월더하기1
, ADD_MONTHS(TO_TIMESTAMP(CONCAT(STD_MT, '01'), 'yyyyMMdd'), -1) AS 월빼기
, TO_CHAR(ADD_MONTHS(TO_TIMESTAMP(CONCAT(STD_MT, '01'), 'yyyyMMdd'), 1), 'yyyyMMdd') AS 월더하기2
, TO_CHAR(ADD_MONTHS(TO_TIMESTAMP(CONCAT(STD_MT, '01'), 'yyyyMMdd'), 1), 'yyyyMM') AS 월더하기3
, from_timestamp((ADD_MONTHS(TO_TIMESTAMP(CONCAT(STD_MT, '01'), 'yyyyMMdd'), 1), 'yyyyMM') AS 월더하기3
FROM DASQL.TB_PBTRNSP
임팔라 SQL에서 CHAR 타입을 시간 유형으로 바꾸는 방법
SELECT STD_MT
, DATE_ADD(TO_TIMESTAMP(CONCAT(STD_MT, '01'), 'yyyyMMdd'), INTERVAL 7 DAY) AS 일더하기
, DATE_SUB(TO_TIMESTAMP(CONCAT(STD_MT, '01'), 'yyyyMMdd'), INTERVAL 7 DAY) AS 일더하기
, DATE_SUB(TO_TIMESTAMP(CONCAT(STD_MT, '01'), 'yyyyMMdd'), INTERVAL -1 MONTH) AS 월더하기
, DATE_SUB(TO_TIMESTAMP(CONCAT(STD_MT, '01'), 'yyyyMMdd'), INTERVAL -1 YEAR) AS 년더하기
FROM DASQL.TB_PBTRNSP
;
시간 형태의 컬럼 에서 년도,월,분,시간 형태를 추출하는 방법
SELECT SYSDATE AS 시간
, CAST(SYSDATE AS TIMESTAMP) AS 시간2
, EXTRACT(YEAR FROM CAST(SYSDATE AS TIMESTAMP)) AS 년도
, EXTRACT(MONTH FROM CAST(SYSDATE AS TIMESTAMP)) AS 월
, EXTRACT(DAY FROM CAST(SYSDATE AS TIMESTAMP)) AS 일
, EXTRACT(HOUR FROM CAST(SYSDATE AS TIMESTAMP)) AS 시간
, EXTRACT(MINUTE FROM CAST(SYSDATE AS TIMESTAMP)) AS 분
, EXTRACT(SECOND FROM CAST(SYSDATE AS TIMESTAMP)) AS 초
, TO_CHAR(SYSDATE, 'YYYY') AS 년도
, TO_CHAR(SYSDATE, 'MM') AS 월
, TO_CHAR(SYSDATE, 'DD') AS 일
, TO_CHAR(SYSDATE, 'HH24') AS 시간
, TO_CHAR(SYSDATE, 'MI') AS 분
, TO_CHAR(SYSDATE, 'SS') AS 초
, TO_CHAR(SYSDATE, 'YYYYMMDD') AS 년월일1
, TO_CHAR(SYSDATE, 'YYMMDD') AS 년월일2
, TO_CHAR(SYSDATE, 'YY/MM/DD') AS 년월일3
, TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS 년월일4
FROM DUAL
;
일차이/년차이/월차이 계산하기
SELECT TO_DATE('20220601', 'yyyyMMdd') - TO_DATE('20220301', 'yyyyMMdd') AS 일차이
, (TO_DATE('20220601', 'yyyyMMdd') - TO_DATE('20220301', 'yyyyMMdd'))/365 AS 년차이
, (TO_DATE('20220601', 'yyyyMMdd') - TO_DATE('20220301', 'yyyyMMdd'))/365*12 AS 월차이1
, MONTHS_BETWEEN('20220601', '20220301') AS 월차이2
, ROUND((TO_DATE('20220601', 'yyyyMMdd') - TO_DATE('20220301', 'yyyyMMdd'))/365, 2) AS 년차이_반올림
, ROUND((TO_DATE('20220601', 'yyyyMMdd') - TO_DATE('20220301', 'yyyyMMdd'))/365*12) AS 월차이_반올림
, CEIL((TO_DATE('20220601', 'yyyyMMdd') - TO_DATE('20220301', 'yyyyMMdd'))/365*12) AS 월차이_올림
, FLOOR((TO_DATE('20220601', 'yyyyMMdd') - TO_DATE('20220301', 'yyyyMMdd'))/365*12) AS 월차이_내림
, TRUNC(TO_DATE('20220618', 'yyyyMMdd'), 'MONTH') AS 처음일자
, LAST_DAY(TO_DATE('20220618', 'yyyyMMdd')) AS 마지막일
, LAST_DAY(TO_DATE('20220618', 'yyyyMMdd')) - TO_DATE('20220617', 'yyyyMMdd') AS 남은일수
FROM dual
;
날짜 나타내기
- ‘Day’ or ‘day’는 한국어에는 상관 없지만, 영어에서는 앞글자 대문자 여부를 나타냄
SELECT TO_CHAR(TO_DATE('20220618', 'yyyyMMdd'), 'Day') AS 요일1 -- Saturday
, TO_CHAR(TO_DATE('20220618', 'yyyyMMdd'), 'day') AS 요일2 -- saturday
, TO_CHAR(TO_DATE('20220618', 'yyyyMMdd'), 'Dy') AS 요일3 -- Sat
, TO_CHAR(TO_DATE('20220618', 'yyyyMMdd'), 'dy') AS 요일4 -- sat
, TO_CHAR(TO_DATE('20220618', 'yyyyMMdd'), 'd' AS 요일5 -- 7
FROM DUAL
;
'Lecture > 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리' 카테고리의 다른 글
[SQL] 데이터분석가 많이 쓰는 완전 기초 쿼리 5탄 : 집계함수 count, min, max, sum, avg, decode, group by, having (0) | 2023.11.10 |
---|---|
[SQL] 데이터분석가 많이 쓰는 완전 기초 쿼리 4탄 : row number, (dense) rank, ntile (0) | 2023.11.10 |
[SQL] 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리 3탄 : 테이블 생성, 삭제, JOIN (0) | 2023.11.09 |
[SQL] 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리 1탄 (1) | 2023.11.09 |