作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
如何在 Go 中表示 PostgreSQL 区间?
我的结构看起来像这样:
type Product struct {
Id int
Name string
Type int
Price float64
Execution_time ????
}
我的数据库中的 execution_time 字段是 interval
。
最佳答案
我的最佳答案come across是在您的架构中使用 bigint
,并在 time.Duration
的包装器类型上实现 Value
和 Scan
。
// 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
=> interval
的类型转换。
关于postgresql - 如何在 Go 中表示 PostgreSQL 区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32746858/
我是一名优秀的程序员,十分优秀!