使用 gorm 在 sqlite 中的时间列

tia*_*dll 3 sqlite go go-gorm

我正在尝试从 sqlite 查询对象,但由于类型时间而出现此错误:

(sql: Scan error on column index 1: unsupported Scan, storing driver.Value type []uint8 into type *time.Time)
Run Code Online (Sandbox Code Playgroud)

我的结构是:

type Timeline struct {
ID        string     `json:"id"`
Timestamp *time.Time `json:"timestamp"`
Run Code Online (Sandbox Code Playgroud)

我的数据库是这样的:

CREATE TABLE timelines (id text, timestamp text, ...
Run Code Online (Sandbox Code Playgroud)

示例行之一是:

('Locked in VR', '2018-03-17 10:50:59.548+01:00',...
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我应该在结构中有一些东西吗?

Timestamp *time.Time `json:"timestamp" gorm:"time"`
Run Code Online (Sandbox Code Playgroud)

mbu*_*ann 5

我不熟悉gorm,但不应该定义类型的时间戳datetime而不是text?另外:当您标记gorm:"time"列名称时,应该是time而不是标记timestamp,或者标记gorm:"timestamp"。但你可以省略 gorm 标签。

为了简单起见,您可以让 gorm 创建表:

db, err := gorm.Open("sqlite3", "test.db")
db.CreateTable(&Timeline{})
Run Code Online (Sandbox Code Playgroud)