포스팅 목차
80. Display the date three months before the current date
* 현재 날짜를 기준으로 3개월 이전 날짜를 출력하시오.
- [날짜 함수] 특정 기간 전후 날짜 계산- 날짜 증감
|
1. Oracle(오라클)
add_months 함수를 사용하여서 현재 날짜(sysdate)를 기준으로 3개월 이전 날짜를 출력한다.
Oracle Programming |
select add_months(sysdate,-3) bef_day_3mon
from dual
2. Python Pandas(파이썬)
relativedelta 함수를 사용하여서 현재 날짜를 기준으로 3개월 이후 날짜를 출력한다.
Python Programming |
from datetime import datetime
from dateutil.relativedelta import relativedelta
print( datetime.today()+ relativedelta(months=3) )
display( datetime.today()+ relativedelta(months=3) )
datetime.now().date() + relativedelta(months=+3)
Results |
2021-06-13 09:02:09.215540
datetime.datetime(2021, 6, 13, 9, 2, 9, 216558)
datetime.date(2021, 6, 13)
timedelta 함수를 사용하여서 현재 날짜에 단순하게 90일을 추가한다.
Python Programming |
import calendar
from datetime import datetime,timedelta
print (datetime.now().date() + timedelta(3*30))
Results |
2021-06-11
3. R Programming (R Package)
- string Vs Base 함수 : https://stringr.tidyverse.org/articles/from-base.html
현재 날짜에 3개월을 더하여서 3개월 이후 날짜를 출력한다.
R Programming |
%%R
Sys.Date() + months(3)
Results |
[1] "2021-06-13"
as.difftime 함수를 사용하여서 현재 날짜에 단순하게 90일을 추가한다. as.difftime 함수에서 months는 지원 안 함.
R Programming |
%%R
Sys.Date()+as.difftime(90,units="days")
Results |
[1] "2021-06-11"
seq 함수를 사용하여서 현재 일자에서 월단위로 4개월 날짜(현재 날짜가 포함된 월을 포함)를 생성 후 마지막 월의 날짜를 추출한다.
R Programming |
%%R
print(seq(Sys.Date(), by = "month", length.out = 4))
seq(Sys.Date(), by = "month", length.out = 4)[4]
Results |
[1] "2021-03-13" "2021-04-13" "2021-05-13" "2021-06-13"
[1] "2021-06-13"
4. R Dplyr Package
5. R sqldf Package
- Month_lastday : 당월 마지막 날짜를 계산하기 위하여 date 함수의 "start of month" 옵션을 지정하여서 다음 달 초일자(1일)을 구한 후 -1일을 하여서 당월 마지막 날짜를 계산한다.
- add_month : date 함수에 '+3 month'을 지정하여서 3개월이 경과한 날짜를 계산한다.
R Programming |
%%R
sqldf("select date('now','start of month','+1 month','-1 day') Month_lastday,
date('now','+3 month') add_month")
Results |
Month_lastday add_month
1 2021-03-31 2021-06-13
6. Python pandasql Package
Python Programming |
ps.sqldf("select date('now','start of month','+1 month','-1 day') Month_lastday, date('now','+3 month') add_month")
Results |
Month_lastday | add_month | |
0 | 2021-03-31 | 2021-06-13 |
7. R data.table Package
8. SAS Proc SQL
SAS Programming |
%%SAS sas
PROC SQL;
CREATE TABLE STATSAS_1 AS
select intnx('month',today(),0,'E') as last_day format=yymmddn8.,
intnx('month',today(),3,'S') as add_month format=yymmddn8.
FROM EMP(OBS=1);
QUIT;
PROC PRINT;RUN;
Results |
OBS | last_day | add_month |
1 | 20210430 | 20210717 |
9. SAS Data Step
SAS Programming |
%%SAS sas
DATA STATSAS_2;
format last_day add_month yymmddn8.;
last_day = intnx('month',today(),0,'E');
add_month = intnx('month',today(),3,'S');
* 문자형 변수로 변환;
last_day_char = put(intnx('month',today(),0,'E'),yymmddn8.);
add_month_char = put(intnx('month',today(),3,'S'),yymmddn8.);
RUN;
PROC PRINT;RUN;
Results |
OBS | last_day | add_month | last_day_char | add_month_char |
1 | 20210430 | 20210717 | 20210430 | 20210717 |
10. Python Dfply Package
Python Programming |
from datetime import datetime
from dateutil.relativedelta import relativedelta
emp >> mutate( Month_afterday = datetime.today()+ relativedelta(months=3) ,
Month_afterday_2 = datetime.now().date() + relativedelta(months=+3)) >> \
select(~X.job,~X.mgr,~X.sal,~X.comm) >> head()
Results |
empno | ename | hiredate | deptno | Month_afterday | Month_afterday_2 | |
0 | 7369 | SMITH | 1980/12/17 | 20 | 2021-08-04 10:06:46.904561 | 2021-08-04 |
1 | 7499 | ALLEN | 1981/02/20 | 30 | 2021-08-04 10:06:46.904561 | 2021-08-04 |
2 | 7521 | WARD | 1981/02/22 | 30 | 2021-08-04 10:06:46.904561 | 2021-08-04 |
3 | 7566 | JONES | 1981/04/02 | 20 | 2021-08-04 10:06:46.904561 | 2021-08-04 |
4 | 7654 | MARTIN | 1981/09/28 | 30 | 2021-08-04 10:06:46.904561 | 2021-08-04 |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트
반응형
'통계프로그램 비교 시리즈 > 프로그래밍비교(Oracle,Python,R,SAS)' 카테고리의 다른 글
[데이터 전처리 비교- 데이터 추출] 비상관 서브쿼리를 만족하는 데이터 추출 - 중복 제거를 통한 유일한 값 추출 - IN 연산자 - 82 (0) | 2021.09.01 |
---|---|
[데이터 전처리- 데이터 추출] 비상관 서브쿼리(Uncorrelated Subqueyr) 를 만족하는 데이터 추출 - IN 연산자 - 81 (0) | 2021.08.31 |
[데이터 전처리- 날짜함수 예제] 현재 시간 출력 - 79 (0) | 2021.08.31 |
[데이터 전처리- 날짜함수] 가장 빠른 요일에 해당하는 날짜 반환 - 78 (0) | 2021.08.31 |
[데이터 전처리- 날짜함수 예제] 날짜 함수를 사용한 기준월 사이의 기간(Gap) 계산 - 75 (0) | 2021.08.31 |
댓글