# date_trunc — DuckDB 1.3.2

Truncate to specified precision

- Reference: /products/haybarn/functions/releases/duckdb-1.3.2/date_trunc/
- JSON: /products/haybarn/functions/api/v1/duckdb-1.3.2/functions/date_trunc.json
- Snapshot ID: duckdb-1.3.2
- Engine: duckdb v1.3.2
- Source ID: 0b83e5d2f6
- Binary SHA-256: 9a2ae2a4d5dbd07a5b0cb30c502d65014825d34924c681eb3faa7647e7cd2b6f
- Captured: 2026-09-05T18:37:33.818Z
- Source: https://github.com/duckdb/duckdb/releases/tag/v1.3.2
- Loaded extensions: autocomplete, core_functions, icu, json, parquet, shell

## Interpretation

- Choose a snapshot matching the target engine and build. The default is captured from the published Haybarn WASM package used by the browser playground. Historical native snapshots are also available.
- Availability is an observation in the recorded build and extension profile, not a guarantee of support in every installation or in WASM.
- Types and descriptions are declarations from duckdb_functions(). Binding can specialize result types. Null means not supplied by the catalog; do not invent defaults, optionality, argument mode, or table output columns.
- Raw parameter arrays preserve catalog order for scalar/aggregate/macro functions. Raw table arguments are alphabetical. Use callingConvention for engine-confirmed positional order and named arguments; null modes are unrecorded. Named does not mean optional. Macro defaults and special named variadic behavior are not supplied by duckdb_functions().
- Catalog examples are source material and may require data or extensions. runnableExamples contains separately verified SQL for the pinned WASM package; sample-data adaptations and guide examples are labeled separately.
- Guide annotations and recipes are separate editorial content. The browser runner always uses Haybarn WASM 1.5.5-rc3, independently of the documentation snapshot.
- All URLs beginning with / are relative to the origin hosting this document. Exports require no JavaScript, cookies, API key, or browser engine.

## Overloads

### overload-f014b24a1d390fbc

Kind: scalar. Parameter order: catalog-order.

```text
date_trunc(part: VARCHAR, timestamp: DATE) → TIMESTAMP
```

Link: /products/haybarn/functions/releases/duckdb-1.3.2/date_trunc/#overload-f014b24a1d390fbc

| Argument | Catalog type | Calling mode |
| --- | --- | --- |
| part | VARCHAR | not recorded |
| timestamp | DATE | not recorded |

Declared return type: TIMESTAMP. Variadic argument type: none declared.
Stability: CONSISTENT. Declared side effects: false.

### overload-9c84d92a4b07811d

Kind: scalar. Parameter order: catalog-order.

```text
date_trunc(part: VARCHAR, timestamp: INTERVAL) → INTERVAL
```

Link: /products/haybarn/functions/releases/duckdb-1.3.2/date_trunc/#overload-9c84d92a4b07811d

| Argument | Catalog type | Calling mode |
| --- | --- | --- |
| part | VARCHAR | not recorded |
| timestamp | INTERVAL | not recorded |

Declared return type: INTERVAL. Variadic argument type: none declared.
Stability: CONSISTENT. Declared side effects: false.

### overload-00ab26434eba746d

Kind: scalar. Parameter order: catalog-order.

```text
date_trunc(part: VARCHAR, timestamp: TIMESTAMP) → TIMESTAMP
```

Link: /products/haybarn/functions/releases/duckdb-1.3.2/date_trunc/#overload-00ab26434eba746d

| Argument | Catalog type | Calling mode |
| --- | --- | --- |
| part | VARCHAR | not recorded |
| timestamp | TIMESTAMP | not recorded |

Declared return type: TIMESTAMP. Variadic argument type: none declared.
Stability: CONSISTENT. Declared side effects: false.

### overload-b289c58c72895a21

Kind: scalar. Parameter order: catalog-order.

```text
date_trunc(part: VARCHAR, timestamp: TIMESTAMP WITH TIME ZONE) → TIMESTAMP WITH TIME ZONE
```

Link: /products/haybarn/functions/releases/duckdb-1.3.2/date_trunc/#overload-b289c58c72895a21

| Argument | Catalog type | Calling mode |
| --- | --- | --- |
| part | VARCHAR | not recorded |
| timestamp | TIMESTAMP WITH TIME ZONE | not recorded |

Declared return type: TIMESTAMP WITH TIME ZONE. Variadic argument type: none declared.
Stability: CONSISTENT. Declared side effects: false.


## Guide recipes

### Give your timestamps a rhythm.

Group events into calendar months with date_trunc. The same pattern works for days, weeks, and years.

Intended runtime: Haybarn WASM 1.5.5-rc3. Per-example execution verification: not recorded in this export.

```sql
SELECT
  date_trunc('month', sold_at) AS month,
  sum(amount) AS revenue
FROM (VALUES
  (DATE '2026-06-03', 120),
  (DATE '2026-06-18', 85),
  (DATE '2026-07-02', 150)
) AS sales(sold_at, amount)
GROUP BY 1 ORDER BY 1;
```

## Engine catalog examples

Source examples may require additional data or extensions. Expressions are wrapped in SELECT; execution verification is not recorded.

Reported for: overload-f014b24a1d390fbc, overload-9c84d92a4b07811d, overload-00ab26434eba746d, overload-b289c58c72895a21

```sql
SELECT date_trunc('hour', TIMESTAMPTZ '1992-09-20 20:38:40');
```

## Runnable examples

Executed successfully in Haybarn WASM 1.5.5-rc3. Sample data and guide examples are separate from the original catalog.

```sql
SELECT date_trunc('hour', TIMESTAMPTZ '1992-09-20 20:38:40');
```

## Additional DuckDB documentation

- [Date Functions](https://duckdb.org/docs/current/sql/functions/date#date_truncpart-date)
- [Timestamp Functions](https://duckdb.org/docs/current/sql/functions/timestamp#date_truncpart-timestamp)
- [Timestamp with Time Zone Functions](https://duckdb.org/docs/current/sql/functions/timestamptz#date_truncpart-timestamptz)

## In other engines

### PostgreSQL

Uses date_trunc as part of a larger rewrite.

PostgreSQL:

```sql
WITH dates AS (SELECT GENERATE_SERIES('2020-01-01'::DATE, '2024-01-01'::DATE, '1 day'::INTERVAL) AS date), date_table AS (SELECT DISTINCT DATE_TRUNC('MONTH', date) AS date FROM dates) SELECT * FROM date_table
```

Haybarn / DuckDB:

```sql
WITH dates AS (SELECT UNNEST(GENERATE_SERIES(CAST('2020-01-01' AS DATE), CAST('2024-01-01' AS DATE), CAST('1 day' AS INTERVAL))) AS date), date_table AS (SELECT DISTINCT DATE_TRUNC('MONTH', date) AS date FROM dates) SELECT * FROM date_table
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_postgres.py#L787).

### BigQuery: date_trunc()



BigQuery:

```sql
SELECT DATE_TRUNC(DATE '2008-11-10', ISOWEEK)
```

Haybarn / DuckDB:

```sql
SELECT DATE_TRUNC('WEEK', CAST('2008-11-10' AS DATE))
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_bigquery.py#L3710).

### ClickHouse: tomonday()



ClickHouse:

```sql
toMonday(x)
```

Haybarn / DuckDB:

```sql
DATE_TRUNC('WEEK', x)
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_clickhouse.py#L1921).

### Presto



Presto:

```sql
SELECT ((DATE_ADD('week', -5, DATE_TRUNC('DAY', DATE_ADD('day', (0 - MOD((DAY_OF_WEEK(CAST(CAST(DATE_TRUNC('DAY', NOW()) AS DATE) AS TIMESTAMP)) % 7) - 1 + 7, 7)), CAST(CAST(DATE_TRUNC('DAY', NOW()) AS DATE) AS TIMESTAMP)))))) AS t1
```

Haybarn / DuckDB:

```sql
SELECT ((DATE_TRUNC('DAY', CAST(CAST(DATE_TRUNC('DAY', CURRENT_TIMESTAMP) AS DATE) AS TIMESTAMP) + INTERVAL (0 - ((ISODOW(CAST(CAST(DATE_TRUNC('DAY', CURRENT_TIMESTAMP) AS DATE) AS TIMESTAMP)) % 7) - 1 + 7) % 7) DAY) + INTERVAL (-5) WEEK)) AS t1
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_duckdb.py#L1946).

### SQL Server: datetrunc()



SQL Server:

```sql
SELECT DATETRUNC(month, foo)
```

Haybarn / DuckDB:

```sql
SELECT DATE_TRUNC('MONTH', foo)
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_tsql.py#L2572).

### Snowflake: date_trunc()

Same function. The SQLGlot example uses the same call in both engines.

```sql
DATE_TRUNC('WEEK', CURRENT_DATE)
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_snowflake.py#L3898).

## Observed availability

| Snapshot | Observed | Overloads | JSON |
| --- | --- | --- | --- |
| haybarn-1.5.5-rc3 | present | 4 | [reference](/products/haybarn/functions/api/v1/haybarn-1.5.5-rc3/functions/date_trunc.json) |
| duckdb-1.5.5 | present | 4 | [reference](/products/haybarn/functions/api/v1/duckdb-1.5.5/functions/date_trunc.json) |
| duckdb-1.4.4 | present | 4 | [reference](/products/haybarn/functions/api/v1/duckdb-1.4.4/functions/date_trunc.json) |
| duckdb-1.3.2 | present | 4 | [reference](/products/haybarn/functions/api/v1/duckdb-1.3.2/functions/date_trunc.json) |

Engine catalog documentation is derived from MIT-licensed Haybarn and DuckDB. [Notices](/third-party-notices.txt).
