5시간코딩
날짜 본문
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