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ê.