메인 콘텐츠로 건너뛰기
시계열 데이터를 효과적으로 관리하려면 다양한 날짜 및 시간 타입이 필요하며, ClickHouse는 이를 충실히 제공합니다. 간결한 날짜 표현부터 나노초 정확도의 고정밀 timestamp까지, 이러한 타입은 다양한 시계열 애플리케이션의 실질적인 요구 사항과 스토리지 효율성 사이의 균형을 맞추도록 설계되었습니다. 과거 금융 데이터, IoT 센서 판독값, 미래 시점의 이벤트 등 어떤 데이터를 다루는 경우에도 ClickHouse의 날짜 및 시간 타입은 다양한 시간 관련 데이터 시나리오를 처리하는 데 필요한 유연성을 제공합니다. 지원되는 타입의 폭이 넓어 사용 사례에 필요한 정밀도를 유지하면서 스토리지 공간과 쿼리 성능을 모두 최적화할 수 있습니다.
  • 대부분의 경우 Date 타입이면 충분합니다. 이 타입은 날짜를 저장하는 데 2바이트가 필요하며, 범위는 [1970-01-01, 2149-06-06]로 제한됩니다.
  • Date32는 더 넓은 날짜 범위를 지원합니다. 날짜를 저장하는 데 4바이트가 필요하며, 범위는 [1900-01-01, 2299-12-31]로 제한됩니다.
  • DateTime은 초 단위 정밀도의 날짜 및 시간 값을 저장하며, 범위는 [1970-01-01 00:00:00, 2106-02-07 06:28:15]입니다. 값당 4바이트가 필요합니다.
  • 더 높은 정밀도가 필요한 경우 DateTime64를 사용할 수 있습니다. 이 타입은 최대 나노초 정밀도로 시간을 저장할 수 있으며, 범위는 [1900-01-01 00:00:00, 2299-12-31 23:59:59.99999999]입니다. 값당 8바이트가 필요합니다.
이제 다양한 날짜 타입을 저장하는 테이블을 만들어 보겠습니다:
now() 함수는 현재 시간을 반환하며, now64() 함수는 첫 번째 인수로 지정한 정밀도의 시간을 반환합니다.
이렇게 하면 컬럼 유형에 따라 각 컬럼이 해당 시간 값으로 채워집니다:

Time 및 Time64 타입

날짜 component 없이 하루 중 시간을 저장해야 하는 경우를 위해 ClickHouse는 TimeTime64 타입을 제공합니다. 이 타입들은 버전 25.6에서 도입되었습니다. 반복 일정, 일별 패턴, 또는 날짜와 시간 component를 분리하는 것이 적절한 상황을 표현할 때 유용합니다.
TimeTime64를 사용하려면 다음 설정을 활성화해야 합니다: SET enable_time_time64_type = 1;이 타입들은 버전 25.6에서 도입되었습니다
Time 타입은 초 단위 정밀도로 시, 분, 초를 저장합니다. 내부적으로는 부호 있는 32비트 정수로 저장되며, [-999:59:59, 999:59:59] 범위를 지원하므로 24시간을 초과하는 값도 저장할 수 있습니다. 이는 경과 시간을 추적하거나 단일 날짜 범위를 벗어나는 값을 생성하는 산술 연산을 수행할 때 유용합니다. sub-second 정밀도가 필요한 경우, Time64는 구성 가능한 소수 초를 부호 있는 Decimal64 값으로 저장합니다. 소수 자릿수를 정의하기 위해 정밀도 매개변수(0-9)를 받습니다. 일반적으로 사용하는 정밀도 값은 3(밀리초), 6(마이크로초), 9(나노초)입니다. TimeTime64는 모두 시간대를 지원하지 않습니다. 즉, 지역적 맥락이 없는 순수한 하루 중 시간 값만 나타냅니다. 시간 컬럼이 있는 테이블을 만들어 보겠습니다:
문자열 리터럴 또는 숫자 값을 사용해 시간 값을 삽입할 수 있습니다. Time의 숫자 값은 00:00:00부터 경과한 초로 해석됩니다. Time64의 숫자 값도 00:00:00부터 경과한 초로 해석되며, 소수 부분은 컬럼의 정밀도에 따라 해석됩니다:
시간 값은 직관적으로 필터링할 수 있습니다:

시간대

많은 사용 사례에서 시간대를 함께 저장해야 합니다. 시간대는 DateTime 또는 DateTime64 타입의 마지막 인수로 지정할 수 있습니다:
DDL에서 시간대를 정의했으므로 이제 서로 다른 시간대를 사용해 시각을 삽입할 수 있습니다:
이제 테이블(table)에 어떤 데이터가 들어 있는지 살펴보겠습니다:
첫 번째 행에서는 모든 값을 America/New_York 시간대로 삽입했습니다.
  • dt_1dt64_1은 쿼리 시점에 자동으로 Europe/Berlin으로 변환됩니다.
  • dt_2dt64_2는 시간대가 지정되지 않았으므로 서버의 로컬 시간대를 사용하며, 이 경우 Europe/London입니다.
두 번째 행에서는 모든 값을 시간대 없이 삽입했으므로 서버의 로컬 시간대가 사용되었습니다. 첫 번째 행과 마찬가지로 dt_1dt64_1Europe/Berlin으로 변환되고, dt_2dt64_2는 서버의 로컬 시간대를 사용합니다.

날짜 및 시간 함수

ClickHouse에는 서로 다른 데이터 타입 간에 변환하는 함수도 있습니다. 예를 들어, toDate를 사용해 DateTime 값을 Date 타입으로 변환할 수 있습니다:
toDateTime64를 사용해 DateTimeDateTime64로 변환할 수 있습니다:
또한 toDateTime을 사용하면 Date 또는 DateTime64를 다시 DateTime으로 변환할 수 있습니다:
마지막 수정일 2026년 7월 2일