我在使用 Go 向我的 psql 数据库插入时间戳时遇到问题。
我用这一行形成我的时间戳:
datetime := currentTime.Format("02-01-2006 15:04:05")
我的 sql 查询是:
SqlStatement := `
INSERT INTO readings (date, temp, humi)
VALUES ($1, $2, $3)`
然后我对 psql 数据库的调用是:
_, err = Db.Exec(SqlStatement, datetime, temp, humi)
(如您所见,我这里还有一些其他变量,但它们不会造成任何问题。)
当我执行我的代码时出现此错误:
pq: date/time field value out of range: "21-11-2018 22:19:59"
据我了解,这意味着格式不正确。
然而,当我直接向 psql 控制台输入完全相同的查询时,它成功地将记录(行)添加到表中。
INSERT INTO readings (date, temp, humi) VALUES ('02-01-2006 15:04:05', 20, 30);
旁注:在我将列类型从字符 (20) 更改为时间戳之前,这段代码工作正常,我什至尝试将 CAST 合并到 SQL 中,但我遇到了同样的错误。
最佳答案
我可以看到datetime
变量是string
类型。我不知道为什么你必须在 exec 查询之前将 time.Time
转换为 string
。
如果在readings
表中定义date
列为TIMESTAMP
,你可以这样执行查询
Db.Exec(SqlStatement, currentTime, temp, humi)
关于sql - 如何将时间戳插入postgreSQL数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53421338/