sql - 如何将时间戳插入postgreSQL数据库

标签 sql postgresql go timestamp

我在使用 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/

相关文章:

MySQL Group By 将属性作为列?

mysql - SQL 对另一列中的每个唯一值求和一个值

sql - Django order_by 导致 LEFT JOIN

sql - 依靠多个 bool 列

ruby-on-rails - 为字段创建 PostgreSQL 序列(不是记录的 ID)

sql - 如何在 SQL 选择查询中展开一个 int 对列表

php - MySql 中的批量导入查询 - joomla

go - 如何修复 http : "panic serving 127.0.0.1:54063: 403 Forbidden: Forbidden"

go - 合并两个不同类型的相似结构

postgresql - 计算同一张表中两列的平均值