본문 바로가기

데이터베이스/MariaDB

[MYSQL] 날짜데이터를 저장하고자 할 때의 자료형_ 날짜형(DATETIME)을 사용할까? , 문자열(VARCHAR)타입을 사용할까?

 

DB에서 날짜데이터는 데이터의 입출력의 로그를 남기거나, 스케줄을 제한하여 특정기능을 여는 등에 많은 부분에서 다양하게 활용된다. 

그렇기에 쿼리에서도 기본적인 날짜 데이터 자료형을 지원한다.

  • DATE
  • TIME
  • DATETIME
  • TIMESTAMP

각 날짜데이터는 저장형식이나 범위의 차이는 있지만 날짜데이터로 지정된다는 점에서 궤를 같이한다. 

하지만 실제 업무코드를 살펴보다보면 가변길이 문자열 자료형 VARCHAR() 타입으로 지정해 두는 경우를 심심치 않게 볼 수 있는데, 

본 포스팅에서는 날짜데이터를 다루는 활용을 중점으로 두 가지 자료형에 대한 차이를 설명해보고자 한다. 

 


 날짜 데이터 자료형을 사용하는 경우


장점

  • 자료형으로서 날짜데이터의 포맷을 지정할 수 있다. 
  • 날짜 계산이나 정렬, 검색등의 작업이 쉬워진다.
  • 데이터베이스에서 제공하는 날짜 함수를 활용하여 날짜 계산이나 데이터 가공등의 작업을 보다 쉽게 할 수 있다. 
  • 데이터 유효성 검증이나 데이터 적합성 유지에도 용이하다. 

단점

  • 포맷이 지정되어있으므로 데이터 입력 시에 제약이 따를 수 있다.
  • 날짜형식이 다르게 들어갈 경우 적합성이 깨질 수 있고
  • 시간까지 저장하는 자료형의 경우, 데이터량이 많아짐에 따라 용량측면에서 유의미한 비효율성을 낳게 된다.

 


  • CHAR
  • VARCHAR
  • TEXT

 

 문자열 데이터 자료형을 사용하는 경우


장점

  • 데이터 입력 시 제약이 적어 데이터 입력이 자유롭다. 
  • 같은 문자열 데이터 유형의 인덱스를 사용할 수 있으므로 조회 성능 향상을 기대할 수 있다.

단점

  • 데이터 유효성 검증에 적합하지 않다.
  • 자유로운 데이터 입력으로 인한 데이터의 통일성(정합성)이 깨질 수 있다.
  • 날짜함수사용이 불가하므로 정확한 날짜 계산이 어려울 수 있다. 

 


결론

날짜 데이터를 저장할 때는 해당 데이터를 용도와 성격에 맞는 데이터 유형을 선택하여 사용하는 것이 좋다. 

-> 만약 데이터의 입력이 간편하고 단순한 조회작업만을 수행할 경우에는 문자열 자료형을 사용 권장

-> 만약 데이터의 가공이나 계산 등 2차적인 수행이 동반되는 경우는 날짜형 자료형 사용을 권장

한다.