为了账号安全,请及时绑定邮箱和手机立即绑定

错误:sql:对列索引 11 的扫描错误,名称“i.end_date”:不支持的扫描,存储驱动程序。

错误:sql:对列索引 11 的扫描错误,名称“i.end_date”:不支持的扫描,存储驱动程序。

Go
跃然一笑 2022-08-15 16:57:03
我创建了这样的表:CREATE TABLE MyTable(    id                  uuid,    Test                BOOLEAN   NOT NULL,    end_date            TIMESTAMP NULL DEFAULT NULL,    PRIMARY KEY (id));我的结构type Issue struct {    ID                uuid.UUID    Test              bool    EndDate           time.Time `db:"due_date"`}现在的情况是有一些日期没有在实时数据库中,所以现在我查询得到我得到这个错误EndDateall dataERROR: sql: Scan error on column index 11, name "i.end_date": unsupported Scan, storing driver.Value type <nil> into type *time.Time我不知道问题在哪里。更新如果我使用sql。NullTime,然后我做了一个像这样的反击模式return &model.Issue{        AssetOwnerID: id,        DueDate :       time.Now().UTC().Truncate(time.Second)    } 我收到此错误 Cannot use 'time.Now().UTC().Truncate(time.Second)' (type Time) as type sql.NullTime
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

您可以使用 sql。NullTime 类型,例如:


import (

    "database/sql"

)



    type Issue struct {

        ID                uuid.UUID

        Test              bool

        EndDate           sql.NullTime `db:"due_date"`

    }

然后,您可以使用以下示例:


读取操作:


    if i.EndDate.Valid {

        fmt.Println(i.EndDate.Time.Unix())

    } else {

        fmt.Println("nil endDate")

    }

写入操作:


        i.EndTime.Valid = true

        i.EndTime.Time = time.Unix(iEndTime, 0)

更新:


您可以将结构创建为:


return &model.Issue{

        AssetOwnerID: id,

        DueDate: sql.NullTime{

            Time:  time.Now().UTC().Truncate(time.Second),

            Valid: true,

        }


查看完整回答
反对 回复 2022-08-15
  • 1 回答
  • 0 关注
  • 257 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号