區間型別:interval
用途
當一個 cell 需要保存完整日期時間範圍,例如預約時段、會議室訂位或工作班次時,使用 interval。開始與結束界線會一起存在同一格,並採半開語意 [start, end)。當這一對界線本來就是一個業務值時,便不必協調兩個獨立 datetime 欄位。
建立 schema
送出以下 columns.create body:
{
"name": "預約時段",
"type": "interval",
"required": true,
"description": "保留的 wall-clock 時段"
}Interval 可以設為 required,但不能有 default_value、max_length、options、附件設定或計算欄設定。
合法與不合法的值
可寫入的 cell 必須是只含 start 與 end 的物件。兩個值都使用標準 datetime 格式,而且 end 必須嚴格晚於 start:
{
"data": {
"預約時段": {
"start": "2026-09-01 09:00",
"end": "2026-09-01 10:30"
}
}
}以下值不合法:
{
"data": {
"預約時段": {
"start": "2026-09-01T09:00:00+08:00",
"end": "2026-09-01 09:00",
"timezone": "Asia/Taipei"
}
}
}第一個界線不是標準 YYYY-MM-DD HH:mm 值、兩個界線沒有遞增,而且物件多了額外 key;只給一邊的物件也會被拒絕。讀取時會原樣回傳這個雙字串物件;後端不會附加或轉換時區。
查詢與排序
Interval predicate 只能透過 records.search 的 stored_filters 使用;predicate 的 column 要填 interval 欄位的內部鍵:
{
"stored_filters": [
{
"column": "col_33333333_3333_4333_8333_333333333333",
"op": "overlaps",
"value": ["2026-09-01 09:30", "2026-09-01 11:00"]
}
]
}| 運算子 | 值 | 意義 |
|---|---|---|
overlaps | 兩元素 [start, end] 標準 datetime 陣列,且 start < end | Cell 與半開查詢區間重疊:cell.start < end 且 cell.end > start |
contains_point | 一個標準 datetime 字串 | 該時間點位於 cell 內:cell.start <= point < cell.end |
is_empty / is_not_empty | 省略 value | Cell 不存在或存在 |
舊版 filters 物件不支援 interval cell,eq、between、within_last 等純量運算子也一律不接受。單欄 sort_by 與多欄 sort 都可以指定 interval;排序使用它的 start 界線。
規則與跨介面限制
若同一個 link scope 內的 live rows 不得互相衝突,使用帶 interval_column 的 no_overlap 規則。規則也可以要求以分鐘表示的最小間隔。
Interval 雖然直接內嵌儲存且可寫,但不屬於 stored scalar。它不能當 unique 成分、upsert match_column、IaC record natural key、formula 運算元、lookup/rollup 目標、row-policy 運算元、aggregate metric 或 group_by key。CSV/XLSX 匯入 cell 是字串,無法建立必要的 {start, end} 物件,因此 interval 不是檔案匯入目標。
Custom Table agent toolkit v1 可以寫入形狀正確的 interval cell,但不提供 interval filter、sort 或 group 操作。若要使用 overlaps、contains_point、presence filter 或 interval 排序,請改走 REST search 介面。
注意事項
- 界線是 wall-clock 字串,必須嚴格使用
YYYY-MM-DD HH:mm;秒、T、Z與 offset 都會被拒絕。 - 半開語意允許前一個區間恰好在下一個區間開始時結束。
- Schema retype 進入或離開
interval時,不會重新解讀舊純量或物件;無法轉換的 cell 會走一般 migration reset 路徑。 - Interval 的存在契約是
required: true;v1require規則不接受 interval 運算元。
動手試試
到 API Playground 建立 interval,以 records.create 寫入兩個相鄰時段,再分別用 overlaps 與 contains_point 搜尋。