この問題をさらに調査しました。現在、GORMでは、timestamp with time zone
以外の日付/時刻タイプはサポートされていません。
dialect_postgres.go のコードのこの部分を参照してください :
case reflect.Struct:
if _, ok := dataValue.Interface().(time.Time); ok {
sqlType = "timestamp with time zone"
}
つまり、基本的に2つの選択肢があります。
varchar(10)
を使用する DB内、およびstring
Goでは、単に「9:00 PM」として保存します(10はあなたに合った数字です)
または、timestamp with time zone
を使用します DBでは、time.Time
Goで、日付部分を1970年1月1日の一定の日付としてフォーマットします。例:
time.Parse("2006-01-02 3:04PM", "1970-01-01 9:00PM")
その場合、プレゼンテーションの日付部分を省略する必要がありますが、日付範囲で選択する場合は、それがより適切に機能する可能性があります。