MySQL 데이터베이스에 날짜를 저장하려면 먼저 테이블에 DATE 또는 DATETIME 타입의 컬럼이 있어야 합니다. 그다음, 날짜를 데이터베이스에 삽입하기 전에 문자열 형식으로 변환해야 하는데, 이때 Python의 datetime 모듈에서 제공하는 strftime() 포맷팅 함수를 활용할 수 있습니다.
날짜 삽입 예제
from datetime import datetime
now = datetime.now()
id = 1
formatted_date = now.strftime('%Y-%m-%d %H:%M:%S')
# cursor라는 이름의 커서가 있다고 가정하고 쿼리를 실행합니다:
cursor.execute('insert into table(id, date_created) values(%s, %s)', (id, formatted_date))위 코드를 실행하면 (id, date) 튜플이 테이블에 삽입됩니다. 여기서 %s 플레이스홀더를 사용하면 SQL 인젝션 위험을 줄이면서 안전하게 값을 바인딩할 수 있습니다.
날짜 검색 후 datetime 객체로 변환하기
반대로 SELECT 쿼리를 통해 데이터베이스에서 날짜를 가져올 때는, 문자열 형태로 반환된 날짜를 strptime() 같은 함수를 사용해 다시 datetime 객체로 파싱해야 합니다.
날짜 조회 예제
from datetime import datetime
# cursor라는 이름의 커서가 있다고 가정하고 쿼리를 실행합니다:
cursor.execute('select id, date_created from table where id=1')
# 앞서 삽입한 행은 아래와 같이 가져올 수 있습니다
id, date_str = cursor.fetchone()
# 날짜는 저장할 때 지정한 형식 그대로 문자열로 반환되므로 strptime으로 파싱합니다
created_date = datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')이렇게 하면 생성 날짜를 성공적으로 가져와 datetime 객체로 변환할 수 있으며, 이후 날짜 연산이나 포맷 변경 등을 자유롭게 수행할 수 있습니다.
추가 팁
참고로 mysql-connector-python, PyMySQL 등 일부 최신 MySQL 커넥터는 DATE/DATETIME 타입 컬럼을 자동으로 datetime 객체로 변환해 반환해 주기도 합니다. 이 경우 별도의 strptime() 파싱 과정이 필요 없으므로, 사용 중인 드라이버의 반환 동작을 미리 확인해 두는 것이 좋습니다.