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

Go语言SQL查询中Timestamp日期范围语法错误求助

问题原因及解决方案

1. 原始查询语句的语法错误

你的Go代码中,SQL语句末尾存在多余的语法符号:

// 错误写法,末尾多了 `);)`
`SELECT products.*, user_activities.action_id, user_activities.created_at 
FROM products JOIN user_activities on (
    user_activities.action_id=$1 AND 
    user_activities.product_id=products.id AND 
    user_activities.created_at between $2 and $3);)`

ON子句的条件已经用括号闭合,语句末尾不需要额外的);),直接保留闭合括号即可,修正后:

rows, err := r.db.Query(
    `SELECT products.*, user_activities.action_id, user_activities.created_at 
    FROM products JOIN user_activities on (
        user_activities.action_id=$1 AND 
        user_activities.product_id=products.id AND 
        user_activities.created_at between $2 and $3)`,
    action_id, "2022-08-24", "2022-08-26")

2. 日期转换的笔误问题

你尝试的日期转换语句存在字段名和类型转换的错误:

// 错误写法:字段名写错,转换类型错误
user_activities.created::date_at between $2::date and $3::date)

正确的写法应该是使用字段created_at,并转换为date类型:

user_activities.created_at::date between $2::date and $3::date

验证说明

你提到在线测试环境能正常运行,是因为在线环境中没有这些语法错误(多余的括号/分号、字段名笔误),修正上述问题后,Go代码中的查询即可正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 01:15:41