21193 次
4 に答える
5
この問題をさらに調査しました。現在、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")
その場合、プレゼンテーションで日付の部分を省略する必要がありますが、日付範囲で選択する場合は、そのほうがうまくいく可能性があります。
于 2016-09-15T20:05:48.613 に答える
0
Postgres の観点から見ると、エラーは 0000 年が存在しないことに起因します。有効な Postgres タイムスタンプ。
select '0000-01-01T21:00:00+00'::timestamptz at time zone 'UTC'
ERROR: date/time field value out of range: "0000-01-01T21:00:00+00"
彼に同じエラーを与えます。そして、0001-01-01 の 1 日前のデモンストレーションと同じように:
select '0001-01-01T21:00:00+00'::timestamptz at time zone 'UTC' - interval '1 day' "day_before_1/1/1";
--day_before_1/1/1
--0001-12-31 21:00:00 BC
于 2019-08-13T03:39:18.997 に答える