diff options
author | Yasuhiro Matsumoto <mattn.jp@gmail.com> | 2015-03-04 22:49:17 +0900 |
---|---|---|
committer | Yasuhiro Matsumoto <mattn.jp@gmail.com> | 2015-03-04 22:49:17 +0900 |
commit | 4c5c4e526100f23b17fda84d39a8109cfec00118 (patch) | |
tree | 1824c52c1516e63ae62c5db991c36eb7c4ff7bc5 /sqlite3_test.go | |
parent | Add FTS3 feature. Close #176 (diff) | |
download | golite-4c5c4e526100f23b17fda84d39a8109cfec00118.tar.gz golite-4c5c4e526100f23b17fda84d39a8109cfec00118.tar.xz |
Add loc=XXX parameters to handle timezone
Diffstat (limited to '')
-rw-r--r-- | sqlite3_test.go | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/sqlite3_test.go b/sqlite3_test.go index a0adf30..325ba8e 100644 --- a/sqlite3_test.go +++ b/sqlite3_test.go @@ -744,6 +744,71 @@ func TestStress(t *testing.T) { } } +func TestDateTimeLocal(t *testing.T) { + zone := "Asia/Tokyo" + z, err := time.LoadLocation(zone) + if err != nil { + t.Skip("Failed to load timezon:", err) + } + tempFilename := TempFilename() + db, err := sql.Open("sqlite3", "file:///"+tempFilename+"?loc="+zone) + if err != nil { + t.Fatal("Failed to open database:", err) + } + db.Exec("CREATE TABLE foo (id datetime);") + db.Exec("INSERT INTO foo VALUES('2015-03-05 15:16:17');") + + row := db.QueryRow("select * from foo") + var d time.Time + err = row.Scan(&d) + if err != nil { + t.Fatal("Failed to scan datetime:", err) + } + if d.Local().Hour() != 15 { + t.Fatal("Result should have timezone", d) + } + db.Close() + + db, err = sql.Open("sqlite3", "file:///"+tempFilename) + if err != nil { + t.Fatal("Failed to open database:", err) + } + + row = db.QueryRow("select * from foo") + err = row.Scan(&d) + if err != nil { + t.Fatal("Failed to scan datetime:", err) + } + if d.In(z).Hour() == 15 { + t.Fatalf("Result should not have timezone %v", zone) + } + + _, err = db.Exec("DELETE FROM foo") + if err != nil { + t.Fatal("Failed to delete table:", err) + } + dt, err := time.Parse("2006/1/2 15/4/5 -0700 MST", "2015/3/5 15/16/17 +0900 JST") + if err != nil { + t.Fatal("Failed to parse datetime:", err) + } + db.Exec("INSERT INTO foo VALUES(?);", dt) + + db.Close() + db, err = sql.Open("sqlite3", "file:///"+tempFilename+"?loc="+zone) + if err != nil { + t.Fatal("Failed to open database:", err) + } + + row = db.QueryRow("select * from foo") + err = row.Scan(&d) + if err != nil { + t.Fatal("Failed to scan datetime:", err) + } + if d.Hour() == 15 { + t.Fatalf("Result should have timezone %v", zone) + } +} + func TestVersion(t *testing.T) { s, n, id := Version() if s == "" || n == 0 || id == "" { |