아빠는 개발자

[python] 날짜계산 (datetime) 본문

Python

[python] 날짜계산 (datetime)

father6019 2024. 2. 3. 19:18
728x90
반응형

kibana 에서 대시보드를 만들려고 하는데 시계열 데이터를 만들고 싶어서 DB에서 날짜를 임의로 업데이트를 해야겠다. 

 

python 에서 몇분전, 몇시간전 이런 식으로 날짜를 계산하고싶은데 datetime 을 활용해보잣.

 

from datetime import datetime

now = datetime.now()
print("현재 :" , now)

 

출력 : 현재 : 2024-02-03 18:57:38.572549

 

 

timedelta를 사용해서 날짜 계산을 할껀데 import를 수정하고 

from datetime import datetime, timedelta

 

마이크로 세컨드를 계산해보면

before_one_microsecond = now - timedelta(microseconds=1)
print("1 microsecond 전 :", before_one_microsecond)
after_one_microsecond = now + timedelta(microseconds=1)
print("1 microsecond 후 :", after_one_microsecond)

 

출력

1 microsecond 전 : 2024-02-03 19:07:31.055255
1 microsecond 후 : 2024-02-03 19:07:31.055257

 

위와 같다. 

 

 

 

timedelta 옵션은  microseconds, milliseconds, seconds, minutes, hours, days, weeks Parameter에 값을 원하는 수로 입력하고

 

timedelta(weeks=1, days=3, hours=2)

 

이런식으로도 사용할 수 있음. 

 

 

relativedelta 를 사용하여 계산하는 방법은  

 

from datetime import datetime
from dateutil.relativedelta import relativedelta

 

import 수정하고 문법은 timedelta 와 거의 동일하며 

 

before_one_microsecond = now - relativedelta(microseconds=1)
print("1 microsecond 전 :", before_one_microsecond)
after_one_microsecond = now + relativedelta(microseconds=1)
print("1 microsecond 후 :", after_one_microsecond)

 

 

차이점은 

timedelta 에는 Parameter에 months와 years가 존재하지 않음

relativedelta 에는 milliseconds가 존재하지 않음

 

즉, 마이크로초 전, 마이크로초 후 를 구하고 싶다면 timedelta를 사용해야 하고,

몇달 전, 몇달 후, 몇년 전, 몇년 후 를 구하고 싶다면 relativedelta를 사용해야함.

 

내 DB 테이블의 데이터 포멧은

 

이렇게 되어있으니 포멧을 수정해보자.. 하지마까?

 

 

728x90
반응형