如何在Go中表示PostgreSQL间隔

时间:2015-09-23 18:26:48

标签: postgresql go

如何在Go中表示PostgreSQL间隔?

我的结构看起来像这样:

type Product struct {
    Id              int
    Name            string
    Type            int
    Price           float64
    Execution_time  ????
}

我的数据库上的execution_time字段是interval

2 个答案:

答案 0 :(得分:2)

come across的最佳答案是在您的架构中使用self.navigationController?.navigationBar.barTintColor = UIColor.greenColor() self.navigationController?.navigationBar.alpha = 0.2 self.navigationController?.navigationBar.translucent = true ,并实施bigint& Value的包装类型上的Scan

time.Duration

不幸的是,你会牺牲在查询中进行区间运算的能力 - 除非一些聪明的家伙想要发布// Duration lets us convert between a bigint in Postgres and time.Duration // in Go type Duration time.Duration // Value converts Duration to a primitive value ready to written to a database. func (d Duration) Value() (driver.Value, error) { return driver.Value(int64(d)), nil } // Scan reads a Duration value from database driver type. func (d *Duration) Scan(raw interface{}) error { switch v := raw.(type) { case int64: *d = Duration(v) case nil: *d = Duration(0) default: return fmt.Errorf("cannot sql.Scan() strfmt.Duration from: %#v", v) } return nil } =>的类型转换。 bigint

答案 1 :(得分:2)

如果您确定符合time.Duration限制,并且您只需要几秒钟的准确度即可:

  • 使用SECOND精度创建表 ... someInterval INTERVAL SECOND(0), ...
  • 将INTERVAL转换为秒: SELECT EXTRACT(EPOCH FROM someInterval) FROM someTable;

  • 使用time.Duration::Seconds将数据插入预准备语句