Điều tra thêm vấn đề này. Hiện tại, không có hỗ trợ nào trong GORM cho bất kỳ loại Ngày / Giờ nào ngoại trừ timestamp with time zone
Xem phần mã này từ dialect_postgres.go :
case reflect.Struct:
if _, ok := dataValue.Interface().(time.Time); ok {
sqlType = "timestamp with time zone"
}
Vì vậy, về cơ bản tôi thấy hai lựa chọn cho bạn:
Sử dụng varchar(10)
trong DB và string
trong Go, chỉ cần lưu nó là "9:00 PM" (trong đó 10 là một số phù hợp với bạn)
Hoặc sử dụng timestamp with time zone
trong DB, time.Time
trong Go, và định dạng phần ngày của bạn thành một ngày cố định, 01/01/1970, ví dụ:
time.Parse("2006-01-02 3:04PM", "1970-01-01 9:00PM")
Trong trường hợp đó, bạn sẽ phải bỏ qua phần ngày trong bản trình bày của mình, nhưng nếu bạn định chọn theo phạm vi ngày, điều đó có thể hoạt động tốt hơn cho bạn.