티스토리 뷰
SQL 날짜 포맷
SQL에서 날짜와 시간을 다루는 것은 매우 중요합니다.
날짜 데이터는 다양한 형식으로 저장되고 표시될 수 있기 때문에, 적절한 날짜 포맷팅 방법을 이해하는 것이
필수적입니다.
기본 문법
SQL에서 날짜를 포맷팅하기 위해서는 일반적으로 DATE_FORMAT (MySQL),
TO_CHAR (Oracle, PostgreSQL) 등의 함수를 사용합니다.
- MySQL
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS formatted_date;
- 위의 예제에서는 현재 날짜와 시간을 YYYY-MM-DD 형식으로 포맷팅합니다.
- Oracle / PostgreSQL
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') AS formatted_date FROM dual;
- Oracle과 PostgreSQL에서는 TO_CHAR 함수를 사용하여 날짜를 포맷합니다.
포맷 코드 설명
날짜 포맷팅에서 자주 사용하는 포맷 코드는 다음과 같습니다:
- %Y 또는 YYYY: 4자리 연도 (예: 2024)
- %y 또는 YY: 2자리 연도 (예: 24)
- %m 또는 MM: 2자리 월 (01에서 12)
- %d 또는 DD: 2자리 일 (01에서 31)
- %H 또는 HH24: 24시간제 시 (00에서 23)
- %i 또는 MI: 분 (00에서 59)
- %s 또는 SS: 초 (00에서 59)
예제
- MySQL
SELECT DATE_FORMAT('2024-09-11 14:35:22', '%Y-%m-%d %H:%i:%s') AS formatted_date_time;
- Oracle
SELECT TO_CHAR(TO_DATE('2024-09-11 14:35:22', 'YYYY-MM-DD HH24:MI:SS'),
'YYYY-MM-DD HH24:MI:SS') AS formatted_date_time FROM dual;
- Oracle에서는 TO_DATE 함수를 사용하여 문자열을 날짜로 변환한 후,
TO_CHAR를 사용하여 다시 문자열 형식으로 포맷팅할 수 있습니다.
Good 사용법
1. 서버 사이드 포맷팅: SQL에서 날짜를 적절히 포맷팅하여 서버에서 클라이언트로 데이터를 전달하는 것이 좋습니다. 이렇게 하면 클라이언트에서 별도로 포맷팅을 처리할 필요가 없어집니다.
SELECT DATE_FORMAT(order_date, '%Y-%m-%d') AS order_date FROM orders;
2. 일관된 포맷 사용: 모든 쿼리에서 일관된 날짜 포맷을 사용하는 것이 유지보수에 유리합니다.
Bad 사용법
1. 하드코딩된 포맷 문자열: 다양한 데이터베이스 시스템에서 작업할 경우, 특정 DBMS에 종속적인 포맷 문자열을 사용하는 것은 피해야 합니다. 예를 들어, MySQL에서 사용되는 % 포맷 코드는 다른 시스템에서 인식되지 않을 수 있습니다.
SELECT DATE_FORMAT(order_date, '%Y/%m/%d') AS order_date FROM orders;
2. 문자열로 날짜 저장: 날짜 데이터를 텍스트 형식으로 저장하고, 쿼리에서 이를 날짜로 변환하려는 시도는 피해야 합니다. 이는 성능 저하를 일으킬 수 있으며, 데이터 무결성을 해칠 수 있습니다.
SELECT TO_CHAR('2024-09-11', 'YYYY-MM-DD') FROM orders;
- 날짜는 반드시 날짜 데이터형으로 저장해야 합니다.
SQL에서 날짜 포맷팅은 데이터를 더 쉽게 읽고 관리할 수 있게 해줍니다.
다양한 데이터베이스 시스템 간의 호환성을 고려하여 포맷 코드를 사용하는 것이 중요합니다.