3
2

More than 3 years have passed since last update.

PostgresQLのDate型、Time型をGoのTime型にパースする

Posted at

少しハマったのでメモ

目的

PostgresQLに保存されているDate型とTime型のレコードをGoのTime型として扱うのに、値をパースしたい。

問題点

普通にPostgresQLのTime型の'10:00'というデータをロードすると、
0000-01-01T10:00:00Z
という文字列になってしまうので、これをGoのtimeパッケージのTime型として認識させたい。

結論

createdAt, _ := time.Parse(time.RFC3339, value.CreatedAt)
これでcreatedAtという変数にtime.Time型の値が入ったので、あとは好きなようにフォーマットを選ぶだけ(valueにはPostgresQLからロードしたデータが入っている)。
今回は時間だけ欲しかったので、createdAt.Format("15:04")とすればHH:mmのフォーマットの値が取得できる(今回のデータでは10:00)。

※time.Time型のフォーマットの方法は他の記事を参考のこと

補足

日付の形式には色々あって、PostgresQLの場合はRFC3339になっていたのかな。
PostgresQLのドキュメントによれば、標準でISO8601に準拠していると記載があったが、RFC3339とISO8601の違いはあまり分かっていない。

他の形式の場合にも使えるフォーマットがtimeパッケージには定数で色々あるのでGoのドキュメントを参照のこと。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2