You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Supabase查询当前时间处于timestampz字段区间内的数据报错求助

问题原因

你的查询失败核心有两个问题:

  1. 时间格式不兼容:PostgreSQL的timestampz类型不支持Date.now()返回的毫秒时间戳,也不识别Date()生成的非标准时间字符串,这就是你看到两类错误的直接原因。
  2. (补充:你的条件逻辑是正确的——要查询当前时间处于valid_from和valid_to区间内的条目,对应valid_from ≤ 当前时间 ≤ valid_to,只需修正时间格式即可)
解决方案

有两种可靠的解决方式:

方式一:传递标准ISO 8601时间字符串

在TypeScript中生成符合PostgreSQL要求的ISO格式时间字符串,替换你的时间变量:

const currentTimestamp = new Date().toISOString(); // 生成类似 "2024-01-26T12:35:28.000Z" 的标准格式

const result = await serviceSupbaseClient
  .from("lobby")
  .select("id, name, valid_from, valid_to")
  .lte("valid_from", currentTimestamp)
  .gte("valid_to", currentTimestamp);
// 注意:如果查询结果可能有多个条目,不要用.single(),否则会报错;仅确认唯一结果时再添加该方法

方式二:直接使用数据库当前时间(推荐)

避免前端与数据库的时间偏差,直接调用PostgreSQL内置的now()函数获取服务器当前时间,无需在前端处理时间:

const result = await serviceSupbaseClient
  .from("lobby")
  .select("id, name, valid_from, valid_to")
  .lte("valid_from", "now()")
  .gte("valid_to", "now()");
额外注意
  • 若你需要查询所有符合条件的条目,请移除.single()方法,该方法仅用于获取唯一结果,存在多条匹配数据时会抛出错误。
  • 再次确认数据库中valid_from和valid_to字段确实为timestampz类型,避免字段类型不匹配导致的隐性问题。

内容的提问来源于stack exchange,提问作者progNewbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 03:34:52