5시간코딩

날짜 본문

문제풀기/공통기초부분

날짜

5시간코딩 2019. 4. 3. 09:23

oracle

1. 현재날짜시간
select sysdate,current_date,systimestamp,current_timestamp,localtimestamp
from dual;

 

2.문자 -> 날짜 
select 
to_date('2019-01-15 15:14:13','yyyy-mm-dd hh24:mi:ss') 
from dual; 

3.날짜->문자/숫자 
1) 
select  
to_char(hire_date,'yyyy-mm-dd hh24:mi:ss.sssss') "년월일시분초", 
to_char(hire_date,'yyyy"년" yy year') "년", 
to_char(hire_date,'q"분기"')"분기", 
to_char(hire_date,'mm month mon')"월", 
to_char(hire_date,'ww w day dy')"주", 
to_char(hire_date,'ddd dd d')"일", 
to_char(hire_date,'ddsp Ddsp DDsp ddspth Ddspth DDspth') "일(spelling)", 
to_char(systimestamp, 'am pm hh hh24') 
from employees; 
--보너스 
select employee_id, to_char(salary, 'L999G999D00') --LGDisplay로 외우자 
from employees; 
2) 
select  
extract(year from hire_date)"년", 
extract(month from hire_date)"월", 
extract(day from hire_date)"일", 
extract(hour from systimestamp)"시", 
extract(minute from current_timestamp)"분", 
extract(second from localtimestamp)"초", 
extract(timezone_region from current_timestamp)"지역" 
from employees; 

4.날짜 +- 년월일시분초(결과값 : 날짜)
1)
select 
localtimestamp + to_yminterval('02-11') - to_dsinterval('365 23:59:59')
from dual;
2)
select
to_char(systimestamp + 100 - 10/24 + 10/(24*60) -  10/(24*60*60), 'yyyy-mm-dd hh24-mi-ss.sssss')
from dual;
3)
select add_months(systimestamp,6)
from dual;

5.날짜 - 날짜(결과값:년월일)
select 
round(months_between(sysdate, hire_date)/12,2) "년", 
round(months_between(sysdate, hire_date),2) "월",
round(sysdate - hire_date,2) "일"
from employees;

 

6. 기타

1) 그 달의 마지막 일

2) 그 달의 첫 일

3) 그 해의 첫 일

4) 그 해의 마지막 일

5) 가장 가까운 월요일 날짜


r

library(lubridate)
emp <- read.csv("c:/data/employees.csv",header=T,stringsAsFactors=F)
emp$HIRE_DATE<-as.Date(emp$HIRE_DATE,format='%Y-%m-%d')
emp
1.현재날짜/시간
Sys.Date()
Sys.time()
Sys.timezone()
date()#요일까지 출력
now() #::lubridate, Sys.time()과 같음

2.문자 -> 날짜
1)
as.Date(emp$HIRE_DATE,format='%Y-%m-%d')
strptime('2019-01-01 15:16:17','%Y-%m-%d %H:%M:%S')
as.POSIXct('2019-05-31 18:20:45',format='%Y-%m-%d %H:%M:%S') #★시분초까지
as.difftime('02:40:30')
2)::lubridate
ymd('2019-01-01')
hms('5:20:66')
ymd_hms('2019-05-28 15:16:17')

3.날짜->문자/숫자
1)
format(Sys.time(),'%Y-%m-%d %H:%M:%S')
format(Sys.time(),'%y년')
format(Sys.time(),'%m %B %b')
format(Sys.time(),'%a %A %u %w') #★
weekdays(Sys.time())
format(Sys.time(),'%z %Z')
2)::lubriadate
year(emp$HIRE_DATE)
quarter(emp$HIRE_DATE) #★분기
month(emp$HIRE_DATE)
wday(emp$HIRE_DATE) #일(1),월(2) ...
day(emp$HIRE_DATE)
hour(emp$HIRE_DATE) <- 9 #★변수 안에 있는 날짜 수정 가능
minute(emp$HIRE_DATE) <-30
second(emp$HIRE_DATE) <- 59

4.날짜/시간 +- 년월일시분초(결과값 : 날짜)
1)::lubridate #★ 만능
Sys.time() + years(10)+months(10)+days(100)+hours(100)+minutes(100)+seconds(100)
2)::lubridate
now()+hms('10:20:30')
3)그냥 +,-
Sys.Date()+100 #100일 더함
Sys.time()+100 #100초 더함
as.Date('2019-01-24',format='%Y-%m-%d')+100 #100일 더함
as.POSIXct('2019-05-31 18:20:45 ',format='%Y-%m-%d %H:%M:%S') + 100 #100초 더함
as.difftime('02:30:30') + 100 #100시더함
4)
Sys.time() + as.difftime('02:30:00')
as.numeric(as.difftime('02:50:20') - as.difftime('02:40:20'))

5.날짜 - 날짜(결과값:년월일)

difftime(Sys.time(),emp$HIRE_DATE)/365.25#년 (개선이 필요함)

difftime(Sys.time(),emp$HIRE_DATE)/365.25*12 #월 (개선이 필요함)

Sys.Date() - emp$HIRE_DATE #일
difftime(Sys.time(),emp$HIRE_DATE) #일
difftime(Sys.time(),emp$HIRE_DATE, units='weeks') #★units 기능 더 있음

6.기타

 

 

 

 

python

1.

import datetime

datetime.datetime.now()

datetime.date.today()

pd.Timestamp('2019-03-28')

pd.Timestamp('2019-03-28').to_pydatetime()

 

2.문자->날짜

1)

import datetime

datetime.date(2019,4,8)

datetime.time(23,59,59)

datetime.datetime(2019,4,8,23,59,59)

2)

datetime.datetime.strptime('2019-05-28 23:59:59','%Y-%m-%d %H:%M:%S')

3)편함

import dateutil

dateutil.parser.parse('2019-01-01')

dateutil.parser.parse('2019-01-01 14:16:20')

dateutil.parser.parse('20190101 141620')

dateutil.parser.parse('2019/01/01 14:16:20')

4)리스트,Series 형도 한방에 적용

import pandas as pd

emp = pd.read_csv("c:/data/employees.csv")

pd.to_datetime(emp['HIRE_DATE'])

 

3.

1)날짜->숫자

import datetime

datetime.datetime.now().weekday() #월(0),화(1)

datetime.datetime.now().date()

datetime.datetime.now().time()

datetime.datetime.now().year

datetime.datetime.now().month

datetime.datetime.now().day

datetime.datetime.now().hour

datetime.datetime.now().minute

datetime.datetime.now().second

datetime.datetime.now().microsecond

'월화수목금토일'[datetime.datetime.now().weekday()]

 

2)strftime(날짜->문자)

import datetime

datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')

datetime.datetime.now().strftime('%x %X')

datetime.datetime.now().strftime('%c')

datetime.datetime.now().strftime('%Y %y')

datetime.datetime.now().strftime('%m %B')

datetime.datetime.now().strftime('%w %u %W %U') #W:월(1), #U:누적주(일요일시작), W:누적주(월요일 시작)

datetime.datetime.now().strftime('%d %j') #J:누적일

datetime.datetime.now().strftime('%H %I %p')

datetime.datetime.now().strftime('%a %A')

datetime.datetime.now().strftime('%z')

 

3)

import pandas as pd

리스트형도 한방에 적용

3-1)#strftime()과 거의 비슷

pd.to_datetime(emp['HIRE_DATE']).dt.strftime('%Y %m %d')

pd.to_datetime(emp['HIRE_DATE']).dt.strftime('%a %A %w %W') #strftime()과 거의 비슷

3-2)

pd.to_datetime(emp['HIRE_DATE']).dt.year

pd.to_datetime(emp['HIRE_DATE']).dt.month

pd.to_datetime(emp['HIRE_DATE']).dt.day

 

4.날짜 +- 년월일시분초

1)

import datetime

datetime.datetime.now() + datetime.timedelta(days=100, hours=100, minutes=100, seconds=100) #단점:years와 months가 없음

2)

import dateutil #★굿

datetime.datetime.now() + dateutil.relativedelta.relativedelta(years=10, months=-100, weeks=10, days=10, hours=100, minutes=-100,seconds=100)

 

5.날짜 - 날짜

import datetime

(datetime.datetime(2019,5,28)-datetime.datetime(2018,12,15)).days #일

 

6.기타

1)0~9까지 1초마다 카운트

import time

for i in range(10):

print(i)

time.sleep(1)

2)달력 출력

import calendar

calendar.prmonth(2019,3,5)

 

3)오라클의 next_day와 같은 거

import calendar

datetime.datetime.today() + dateutil.relativedelta.relativedelta(weekday=calendar.FRIDAY)

 

4)

import calendar

calendar.monthrange(2019,3)[1]

 

 

 

 

 

 

 

 

 

 

 

불러오는 중입니다...

difftime(Sys.time(),emp$HIRE_DATE)/365.25*12

'문제풀기 > 공통기초부분' 카테고리의 다른 글

NULL 관련  (0) 2019.04.11
문자  (0) 2019.04.03
숫자  (0) 2019.04.03
불린  (0) 2019.04.03
data export, import  (0) 2019.03.29