Вам нужен пользовательский тип int64
, чтобы вы могли затем реализовать интерфейс sql.Scanner
.
type Timestamp int64
func (ts *Timestamp) Scan(src interface{}) error {
switch v := src.(type) {
case time.Time:
*ts = Timestamp(v.Unix())
case []byte:
// ...
case string:
// ...
}
return nil
}
При этом вы можете использовать преобразование при сканировании результата:
type Record struct {
Date int64
}
var r Record
if err := db.QueryRow("select data from table").Scan((*Timestamp)(&r.Date)); err != nil {
panic(err)
}
Или вы можете изменить тип поля в определении структуры, а затем выполнить сканирование непосредственно в поле:
type Record struct {
Date Timestamp
}
var r Record
if err := db.QueryRow("select data from table").Scan(&r.Date); err != nil {
panic(err)
}