学習記録を保存するアプリを React と Supabase で作成中、created_at に関するエラーに遭遇したので記録として残しておきます
開発環境
- フロントエンド: React (TypeScript)
- バックエンド: Supabase
- 状態管理: useState(React標準)
- UIライブラリ: Chakra UI
目的
学習した内容と時間、日時を Supabase に保存する
フォーム入力から title, time, created_at を Supabase に送信する設計です

発生した問題
フォームで created_at を type="time" で入力していたが、Supabase に送信すると以下のエラーが発生
- "The specified value '11:00' does not conform to the required format"
400 Bad Request
原因は、React 側で取得された値が時間だけ("11:00")だったのに対し、Supabase 側が ISO 形式の日時("2025-03-28T11:00" など)を要求していたため
type="time" と Supabase の timestamp 型が合っていなかった
対応
入力形式の変更
React 側のフォームで、type="datetime-local" を使用するように変更
<Input
type="datetime-local"
value={createdAt}
onChange={(e) => setCreatedAt(e.target.value)}
/>
送信形式の変換
入力された文字列はそのままでは Supabase に適さないため、Date オブジェクトに変換し、toISOString() で整形してから送信する。
const newRecord = {
title,
time: Number(time),
created_at: new Date(createdAt).toISOString(),
};
参考