mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-22 00:10:52 +00:00
6ae3998fe7
* Typo fix. * Links fix. * Fixed links in docs. * More fixes. * Link fixes. * CLICKHOUSEDOCS-163: INTERVAL related articles * CLICKHOUSEDOCS-163: build fixes. * Update docs/en/data_types/special_data_types/interval.md Co-Authored-By: Ivan Blinkov <github@blinkov.ru> * CLICKHOUSEDOCS-163: Update after the review.
75 lines
3.0 KiB
Markdown
75 lines
3.0 KiB
Markdown
# Interval {#data-type-interval}
|
|
|
|
The family of data types representing time and date intervals. The resulting types of the [INTERVAL](../../query_language/operators.md#operator-interval) operator.
|
|
|
|
!!! warning "Warning"
|
|
You can't use the `Interval` data types for storing values in tables.
|
|
|
|
Structure:
|
|
|
|
- Time interval as unsigned integer value.
|
|
- Type of an interval.
|
|
|
|
Supported interval types:
|
|
|
|
- `SECOND`
|
|
- `MINUTE`
|
|
- `HOUR`
|
|
- `DAY`
|
|
- `WEEK`
|
|
- `MONTH`
|
|
- `QUARTER`
|
|
- `YEAR`
|
|
|
|
For each interval type, there is the separated data type. For example, the `DAY` interval is expressed as the `IntervalDay` data type:
|
|
|
|
```sql
|
|
SELECT toTypeName(INTERVAL 4 DAY)
|
|
```
|
|
```text
|
|
┌─toTypeName(toIntervalDay(4))─┐
|
|
│ IntervalDay │
|
|
└──────────────────────────────┘
|
|
```
|
|
|
|
## Usage Remarks {#data-type-interval-usage-remarks}
|
|
|
|
You can use `Interval`-type values in arithmetical operations with [Date](../../data_types/date.md) and [DateTime](../../data_types/datetime.md)-type values. For example, you can add 4 days to the current time:
|
|
|
|
```sql
|
|
SELECT now() as current_date_time, current_date_time + INTERVAL 4 DAY
|
|
```
|
|
```text
|
|
┌───current_date_time─┬─plus(now(), toIntervalDay(4))─┐
|
|
│ 2019-10-23 10:58:45 │ 2019-10-27 10:58:45 │
|
|
└─────────────────────┴───────────────────────────────┘
|
|
```
|
|
|
|
Intervals of different types can't be combined. You can't use intervals like `4 DAY 1 HOUR`, express intervals in the units that smaller or equal the the smallest unit of the interval. For example, `1 day and an hour` interval can be expressed as `25 HOUR` or `90000 SECOND`.
|
|
|
|
You can't perform arithmetical operations with the `Interval`-type values, but you can add intervals of different types consequently to some value. For example:
|
|
|
|
```sql
|
|
SELECT now() AS current_date_time, current_date_time + INTERVAL 4 DAY + INTERVAL 3 HOUR
|
|
```
|
|
```text
|
|
┌───current_date_time─┬─plus(plus(now(), toIntervalDay(4)), toIntervalHour(3))─┐
|
|
│ 2019-10-23 11:16:28 │ 2019-10-27 14:16:28 │
|
|
└─────────────────────┴────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
The following query causes the exception:
|
|
|
|
```sql
|
|
select now() AS current_date_time, current_date_time + (INTERVAL 4 DAY + INTERVAL 3 HOUR)
|
|
```
|
|
```text
|
|
Received exception from server (version 19.14.1):
|
|
Code: 43. DB::Exception: Received from localhost:9000. DB::Exception: Wrong argument types for function plus: if one argument is Interval, then another must be Date or DateTime..
|
|
```
|
|
|
|
## See Also
|
|
|
|
- [INTERVAL](../../query_language/operators.md#operator-interval) operator
|
|
- [toInterval](../../query_language/functions/type_conversion_functions.md#function-tointerval) type convertion functions
|