---
title: Range
---
## Basic Usage
Range queries are supported over JSON fields indexed as
[fast](/documentation/indexing/fast_fields).
The following code block executes a range query over a JSON field:
```sql Function Syntax
SELECT description, metadata
FROM mock_items
WHERE id @@@ paradedb.range(
'metadata.attributes.quantity',
int4range(2, 5, '()')
);
```
```sql JSON Syntax
SELECT description, metadata
FROM mock_items
WHERE id @@@
'{
"range": {
"field": "metadata.attributes.quantity",
"lower_bound": {"excluded": 2},
"upper_bound": {"excluded": 5}
}
}'::jsonb;
```
## Datetime Values
Datetime values stored inside JSON must be RFC 3339 formatted in order to work with range queries. The following values
are RFC 3339 compliant:
```sql
-- UTC
2024-10-06T14:30:00Z
-- Timezone offset
2024-10-06T14:30:00+02:00
-- Fractional seconds
2024-10-06T14:30:00.456Z
```
The following values are not RFC 3339 compliant:
```sql
-- No timezone
2024-10-06T14:30:00
-- Date only
2024-10-06
-- Time only
14:30:00
```
## Datetime Handling
When querying datetime values on JSON fields using JSON query syntax, always set `is_datetime: true` to ensure the query is parsed as a date.
```sql
SELECT id FROM mock_items WHERE mock_items @@@ '{
"range": {
"field": "metadata.attributes.tstz",
"lower_bound": {"included": "2023-05-01T08:12:34Z"},
"upper_bound": null,
"is_datetime": true
}
}'::jsonb
ORDER BY id;
```