加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang时间从数据库读取时间

发布时间:2020-12-16 18:24:25 所属栏目:大数据 来源:网络整理
导读:golang从数据库读取时间,如果遇到时间为Null,那么可以采用类似NullInt64的方法! package mainimport ("database/sql/driver""encoding/json""fmt""time")type NullTime struct {Time time.TimeValid bool // 是否有值}//实现它的赋值方法(注意,这个方属

golang从数据库读取时间,如果遇到时间为Null,那么可以采用类似NullInt64的方法!

package main

import (
	"database/sql/driver"
	"encoding/json"
	"fmt"
	"time"
)

type NullTime struct {
	Time  time.Time
	Valid bool // 是否有值
}

//实现它的赋值方法(注意,这个方属于指针)
func (nt *NullTime) Scan(value interface{}) error {
	nt.Time,nt.Valid = value.(time.Time)
	return nil
}

//实现它的取值方式
func (nt NullTime) Value() (driver.Value,error) {
	if !nt.Valid {
		return nil,nil
	}
	return nt.Time,nil
}

func (this NullTime) MarshalJSON() ([]byte,error) {
	if this.Valid {
		var stamp = fmt.Sprintf(""%s"",time.Time(this.Time).Format("2006-01-02 15:04:05"))
		return []byte(stamp),nil
	} else {
		return nil,nil
	}
}

func main() {
	var t NullTime
	t.Scan(nil)
	body,_ := json.Marshal(t)
	fmt.Printf("%s",string(body))

	t.Scan(time.Now())
	body,_ = json.Marshal(t)
	fmt.Printf("%s",string(body))
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读