ClickHouse provides several date and time types with varying precision levels.
Stores a calendar date (year, month, day) without time.
interface User { birth_date: Date; // Date}Stores date and time with second precision.
import { DateTime } from "@514labs/moose-lib"; interface Event { created_at: DateTime; // DateTime (second precision)}Stores date and time with sub-second precision. The precision parameter P specifies decimal places (0-9).
import { DateTime64, ClickHousePrecision } from "@514labs/moose-lib"; interface Event { logged_at: DateTime64<3>; // DateTime64(3) — milliseconds measured_at: DateTime64<6>; // DateTime64(6) — microseconds precise_at: DateTime64<9>; // DateTime64(9) — nanoseconds} // Verbose syntax alternative:interface EventVerbose { logged_at: Date & ClickHousePrecision<3>;}Compact date format for storage optimization.
interface CompactRecord { record_date: Date; // Date16}| ClickHouse Type | TypeScript Helper | TypeScript Verbose | Python |
|---|---|---|---|
Date | Date | Date | date |
Date16 | Date | Date | Annotated[date, ClickhouseSize(2)] |
DateTime | DateTime | Date | datetime |
DateTime64(P) | DateTime64<P> | Date & ClickHousePrecision<P> | clickhouse_datetime64(P) |
| Precision | Resolution | Use Case |
|---|---|---|
| 0 | Seconds | General timestamps |
| 3 | Milliseconds | Web events, logs |
| 6 | Microseconds | High-frequency trading, metrics |
| 9 | Nanoseconds | Scientific measurements |
Use DateTime (second precision) for most use cases. Only use DateTime64 with higher precision when sub-second accuracy is required—it uses more storage.