rows, err := db.NamedQuery(`SELECT ts FROM test_table WHERE ts > '1999-01-08 04:05:06';`, map[string]interface{}{})
The code above gave me the following error:
unexpected `:` while reading named param at 74
panic: runtime error: invalid memory address or nil pointer dereference
This is strange, as the following snippet,
rows, err := db.NamedQuery(`SELECT ts FROM test_table WHERE ts > '1999-01-08';`, map[string]interface{}{})
runs without fault. The difference between the two, is adding time to the input.
I resorted to using db.Query
instead of the sqlx method db.NamedQuery
which solved my problem.
I now see that I should have passed my input to NamedQuery as a parameter. How does one typically write such a query and why would you use NamedQuery rather than Query?
why would you use NamedQuery rather than Query?
Queries that use named parameters are easier for the human to parse.
How does one typically write such a 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
}