PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como economizar tempo no banco de dados em Go ao usar GORM e Postgresql?


Investigou mais esta questão. Atualmente, não há suporte no GORM para nenhum tipo de data/hora, exceto timestamp with time zone

Veja esta parte do código em dialect_postgres.go :
case reflect.Struct:
   if _, ok := dataValue.Interface().(time.Time); ok {
      sqlType = "timestamp with time zone"
}

Então, basicamente, vejo duas opções para você:

Ou use varchar(10) em DB e string em Go, basta salvá-lo como "9:00 PM" (onde 10 é algum número que combina com você)

Ou use timestamp with time zone em DB, time.Time em Go e formate sua parte de data como uma data constante, 01/01/1970, por exemplo:
time.Parse("2006-01-02 3:04PM", "1970-01-01 9:00PM")

Nesse caso, você terá que omitir a parte da data em sua apresentação, mas se planeja selecionar por intervalo de datas, isso pode funcionar melhor para você.