为了账号安全,请及时绑定邮箱和手机立即绑定

go with sqlx NamedQuery timestamp 适用于日期,但不适用于日期时间。

go with sqlx NamedQuery timestamp 适用于日期,但不适用于日期时间。

Go
收到一只叮咚 2022-10-31 17:22:19
rows, err := db.NamedQuery(`SELECT ts FROM test_table WHERE ts > '1999-01-08 04:05:06';`, map[string]interface{}{})上面的代码给了我以下错误:unexpected `:` while reading named param at 74 panic: runtime error: invalid memory address or nil pointer dereference这很奇怪,如下所示,rows, err := db.NamedQuery(`SELECT ts FROM test_table WHERE ts > '1999-01-08';`, map[string]interface{}{})运行无故障。两者的区别在于增加了输入的时间。我求助于使用而不是解决我的问题db.Query的 sqlx 方法。db.NamedQuery我现在看到我应该将我的输入作为参数传递给 NamedQuery。通常如何编写这样的查询,为什么要使用 NamedQuery 而不是 Query?
查看完整描述

1 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

为什么要使用 NamedQuery 而不是 Query?


使用命名参数的查询更容易被人类解析。


通常如何编写这样的查询


layout := "2006-01-02 15:04:05"

ts, err := time.Parse(layout, "1999-01-08 04:05:06")

if err != nil {

    return err

}


arg := map[string]interface{}{"ts": ts}

rows, err := db.NamedQuery(`SELECT ts FROM test_table WHERE ts > :ts`, arg)

if err != nil {

    return err

}


查看完整回答
反对 回复 2022-10-31
  • 1 回答
  • 0 关注
  • 60 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信