_time.time
_オブジェクトをPostgresqlに保存する方法を教えてください。
たとえば、SQLクエリ:
INSERT INTO "UserAccount" ("email", "login_time") VALUES ('[email protected]', 2017-12-12 00:58:26.9589451 +0800 +08 m=+1406.914186601)
私はloginTime := time.Now()
を使おうとしました、そしてそれはPostgresqlが実際に理解できない時間形式を与えます。 2017-12-12 00:58:26.9589451 +0800 +08 m = + 1406.914186601
しかし、loginTime := time.Now().Format(time.RFC3339)
を使用しようとすると、コンパイラーがloginTime
はstring
であると不平を言うので、_time.time
_型にする必要があります。
これの扱い方を教えてもらえますか?
GolangとPostgresの両方にとって新しい、初心者向けの質問をして申し訳ありません。:)
クエリ文字列を手動で作成する代わりに、データベースドライバーが値を適切にエスケープするように、プレースホルダーパラメーターと共に sql#DB.Exec(...)
を使用する必要があります。このようにすることは、特に SQLインジェクション などのセキュリティエラーを回避するためのベストプラクティスです。
email, loginTime := "[email protected]", time.Now()
result, err := db.Exec("INSERT INTO UserAccount VALUES ($1, $2)", email, loginTime)
if err != nil {
panic(err)
}
Pqドライバー(私はあなたが使用していると思います)は、time.Timeインスタンスを自動的に正しく変換します。
だから、あなたは行うことができます:
db.Exec(`INSERT INTO "UserAccount" ("email", "login_time") VALUES ($1, $2)`,"[email protected]",time.Now())