Postgresql sql:列索引2上的扫描错误,名称为“;“在”上创建:正在转换驱动程序。值类型时间。时间

Postgresql sql:列索引2上的扫描错误,名称为“;“在”上创建:正在转换驱动程序。值类型时间。时间,postgresql,go,go-gorm,Postgresql,Go,Go Gorm,我质疑的方式是: package models import ( "fmt" "log" "github.com/jinzhu/gorm" //postgres dv _ "github.com/jinzhu/gorm/dialects/postgres" "ginstatus/pkg/setting" ) var db *gorm.DB type Model struct { ID int `gorm:"prim

我质疑的方式是:

package models

import (
    "fmt"
    "log"

    "github.com/jinzhu/gorm"
    //postgres dv
    _ "github.com/jinzhu/gorm/dialects/postgres"

    "ginstatus/pkg/setting"
)

var db *gorm.DB

type Model struct {
    ID         int `gorm:"primary_key" json:"id"`
    CreatedOn  int `json:"created_on"`
    ModifiedOn int `json:"modified_on"`
}

func init() {
    var (
        err                                                     error
        dbType, dbName, user, password, host, port, tablePrefix string
    )

    sec, err := setting.Cfg.GetSection("database")
    if err != nil {
        log.Fatal(2, "Fail to get section 'database': %v", err)
    }

    dbType = sec.Key("TYPE").String()
    dbName = sec.Key("NAME").String()
    user = sec.Key("USER").String()
    password = sec.Key("PASSWORD").String()
    host = sec.Key("HOST").String()
    port = sec.Key("PORT").String()
    tablePrefix = sec.Key("TABLE_PREFIX").String()

    db, err = gorm.Open(dbType, fmt.Sprintf("host=%s port=%s user=%s dbname=%s password=%s",
        host,
        port,
        user,
        dbName,
        password))
    // db, err = gorm.Open("postgres", "host=192.168.2.200 port=5433 user=czxsql dbname=go_blog password=123456")

    if err != nil {
        log.Println(err)
    }
    //##############################
    // db.LogMode(true)
    //##############################

    gorm.DefaultTableNameHandler = func(db *gorm.DB, defaultTableName string) string {
        return tablePrefix + defaultTableName
    }

    db.SingularTable(true)
    db.DB().SetMaxIdleConns(10)
    db.DB().SetMaxOpenConns(100)
}

func CloseDB() {
    defer db.Close()
}

/数据库数据信息

我的结果

"lists":[{"id":1,"created_on":0,"modified_on":0,"name":"czxtable","created_by":"","modified_by":"","state":0}]
以上是postgresql查询错误

我的数据库时间字段类型“timestamp”

我正在使用“github.com/jinchu/gorm”查询数据库,但查询结果为“0”

当我查询时应该怎么做,我能得到正确的时间格式吗

附言:

只有mysql处理,但没有postgresql处理


抱歉,给您带来更多麻烦,提前感谢您的帮助。

您能显示
标记
结构的定义吗?您还需要显示
模型
,因为问题是在上创建的
,而该问题在
标记
中不直接出现。是,问题是您正在使用
int
作为时间戳字段的Go类型。DB时间戳无法自动解码为
int
。您应该使用
time.time
for You Go timestamp字段。或者,您应该将DB列类型从时间戳更改为整数。或者您需要一个自定义的Go
int
类型,它知道如何解码DB时间戳。如果您查看默认的
gorm.Model
类型,您可以看到它们也使用
time.time
作为时间戳字段。为此,您需要声明一个自定义时间戳类型并实现
json.Marshaler
接口。下面是一个例子:。但是,如果这样做,可能会中断与数据库之间的编码/解码,因此,您可能还需要自定义时间戳来实现
驱动程序.Valuer
sql.Scanner
接口。您可以显示
标记
结构的定义吗?您还需要显示
模型
,因为问题是在
标记
中不直接存在的
上创建的
问题。是的,问题是您正在使用
int
作为时间戳字段的Go类型。DB时间戳无法自动解码为
int
。您应该使用
time.time
for You Go timestamp字段。或者,您应该将DB列类型从时间戳更改为整数。或者您需要一个自定义的Go
int
类型,它知道如何解码DB时间戳。如果您查看默认的
gorm.Model
类型,您可以看到它们也使用
time.time
作为时间戳字段。为此,您需要声明一个自定义时间戳类型并实现
json.Marshaler
接口。下面是一个例子:。但是,如果这样做,可能会中断与数据库之间的编码/解码,因此您可能还需要自定义时间戳来实现
driver.Valuer
sql.Scanner
接口。
"lists":[{"id":1,"created_on":0,"modified_on":0,"name":"czxtable","created_by":"","modified_by":"","state":0}]
sql: Scan error on column index 2, name "created_on": converting driver.Value type time.Time ("2019-11-09 18:33:14.923411 +0000 +0000") to a int: invalid syntax