🤖

BigQueryでISO8601形式で出力して、Goでパースする

2023/07/24に公開

背景

BigQueryで計算した値をDynamoDBに格納し、Goを使ってDynamoDBから日付の値を取得して使いたい

BigQuery

Console

SELECT FORMAT_TIMESTAMP('%Y-%m-%dT%H:%M:%S%Ez', CURRENT_TIMESTAMP(),'Asia/Tokyo')

定義: FORMAT_TIMESTAMP(format_string, timestamp [, <time_zone>])

出力結果

2023-07-24T13:42:22+09:00

参考資料

https://cloud.google.com/bigquery/docs/reference/standard-sql/format-elements

%Ez TIMESTAMP
RFC 3339-compatible numeric time zone (+HH:MM or -HH:MM).

GO

関数

// ISO8601を文字列に変換する関数
func iso8601ToString(iso8601 string) string {
	// ISO8601をtime.Time型に変換
	t, _ := time.Parse(time.RFC3339, iso8601)
	// time.Time型を文字列に変換
	return t.Format("2006-01-02")
}

プリント

fmt.Println(iso8601ToString("2023-07-24T13:42:22+09:00"))

出力結果

2023-07-24

参考資料

https://tex2e.github.io/rfc-translater/html/rfc3339.html

Discussion