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

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?


收到一只叮咚
浏览 61回答 1
1回答

眼眸繁星

为什么要使用 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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go