-
대부분의 경우
Date타입이면 충분합니다. 이 타입은 날짜를 저장하는 데 2바이트가 필요하며, 범위는[1970-01-01, 2149-06-06]로 제한됩니다. -
Date32는 더 넓은 날짜 범위를 지원합니다. 날짜를 저장하는 데 4바이트가 필요하며, 범위는[0000-01-01, 9999-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 타입
Time 및 Time64 타입을 제공합니다. 이 타입들은 버전 25.6에서 도입되었습니다. 반복 일정, 일별 패턴, 또는 날짜와 시간 component를 분리하는 것이 적절한 상황을 표현할 때 유용합니다.
Time 및 Time64를 사용하려면 다음 설정을 활성화해야 합니다: 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(나노초)입니다.
Time과 Time64는 모두 시간대를 지원하지 않습니다. 즉, 지역적 맥락이 없는 순수한 하루 중 시간 값만 나타냅니다.
시간 컬럼이 있는 테이블을 만들어 보겠습니다:
Time의 숫자 값은 00:00:00부터 경과한 초로 해석됩니다. Time64의 숫자 값도 00:00:00부터 경과한 초로 해석되며, 소수 부분은 컬럼의 정밀도에 따라 해석됩니다:
시간대
DateTime 또는 DateTime64 타입의 마지막 인수로 지정할 수 있습니다:
America/New_York 시간대로 삽입했습니다.
dt_1및dt64_1은 쿼리 시점에 자동으로Europe/Berlin으로 변환됩니다.dt_2및dt64_2는 시간대가 지정되지 않았으므로 서버의 로컬 시간대를 사용하며, 이 경우Europe/London입니다.
dt_1 및 dt64_1은 Europe/Berlin으로 변환되고, dt_2 및 dt64_2는 서버의 로컬 시간대를 사용합니다.
날짜 및 시간 함수
toDate를 사용해 DateTime 값을 Date 타입으로 변환할 수 있습니다:
toDateTime64를 사용해 DateTime을 DateTime64로 변환할 수 있습니다:
toDateTime을 사용하면 Date 또는 DateTime64를 다시 DateTime으로 변환할 수 있습니다: