본문 바로가기

ERROR

[Python] 날짜형 정리 datetime, date, timestamp

데이터를 분석하면서 날짜 데이터를 다루는 일이 많았는데,

정말 에러를 많이 만난 것 같다.

 

TypeError: can't compare datetime.datetime to datetime.date

둘 다 날짜형인데 datetime.datetime 과 datetime.date를 비교 못한다니...!

 

예시는 저것만 써놓았지만 그동안 만난 에러는 더 많다.

 

날짜형 데이터 처리하느라 날짜형을 문자형으로도 바꿔보고 문자형을 날짜형으로도 바꾸고 별 짓을 다 하였다.

근본을 모르니까 오류를 만날 때마다 헤매는 일이 다반사였다.

 

따라서 근본을 알아야겠다고 다짐하였고

내가 보려고 쓰는 Python의 날짜형 데이터 정리 시작

 

Python의 날짜형은 ①datetime ②date ③timestamp이 있다

날짜형이 다르면 계산이나 비교할 수 없다!

 

1. datetime, date

import datetime

datetime.date(2022,11,12)  # 날짜
datetime.datetime(2022,11,12,8,15,56)  # 날짜, 시간대

2. timestamp

import pandas as pd

pd.Timestamp('2022-11-12T8:15:21') # 날짜T시간대

 


따라서 비교하기 위해서는

format을 이용하든가

format(datetime.date(2022,5,1), '%Y-%m-%d') > format(pd.Timestamp('2022-11-12T8:15:21'), '%Y-%m-%d')

isformat()을 이용하든가

datetime.date(2022,5,2).isoformat() > datetime.datetime(2022,5,1,6,54,21).isoformat()

strptime, strftime을 이용해야한다

 

[Python] strptime, strftime 차이점

1. strftime (str → datetime) datetime을 문자열로 변환하고 싶을 때 strftime 사용 날짜형에서 strftime을 사용하여 문자형으로 변환된 것을 알 수 있음 # 문자형으로 바뀐 날짜형 데이터 도출 '날짜형데이터

puddle-of-devstory.tistory.com

 

내가 요즘 애용하고 있는 방법은

문자열을 timestamp로 바꾸는 것이다.

datetime.date(2022, 4, 1) == pd.to_datetime('2022-04-01').date()