Convert times to UTC before storage

This commit is contained in:
Micah Stetson 2012-12-29 14:47:17 -08:00
parent 58c4612c1e
commit f6d10a2a58
2 changed files with 16 additions and 3 deletions

View File

@ -213,7 +213,7 @@ func (s *SQLiteStmt) bind(args []driver.Value) error {
} }
rv = C._sqlite3_bind_blob(s.s, n, unsafe.Pointer(p), C.int(len(v))) rv = C._sqlite3_bind_blob(s.s, n, unsafe.Pointer(p), C.int(len(v)))
case time.Time: case time.Time:
b := []byte(v.Format(SQLiteTimestampFormat)) b := []byte(v.UTC().Format(SQLiteTimestampFormat))
rv = C._sqlite3_bind_text(s.s, n, (*C.char)(unsafe.Pointer(&b[0])), C.int(len(b))) rv = C._sqlite3_bind_text(s.s, n, (*C.char)(unsafe.Pointer(&b[0])), C.int(len(b)))
} }
if rv != C.SQLITE_OK { if rv != C.SQLITE_OK {

View File

@ -267,6 +267,12 @@ func TestTimestamp(t *testing.T) {
t.Fatal("Failed to insert nonsense:", err) t.Fatal("Failed to insert nonsense:", err)
} }
timestamp4 := time.Date(2012, time.April, 6, 23, 22, 0, 0, time.FixedZone("TEST", -7*3600))
_, err = db.Exec("INSERT INTO foo(id, ts) VALUES(4, ?)", timestamp4)
if err != nil {
t.Fatal("Failed to insert timestamp:", err)
}
rows, err := db.Query("SELECT id, ts FROM foo ORDER BY id ASC") rows, err := db.Query("SELECT id, ts FROM foo ORDER BY id ASC")
if err != nil { if err != nil {
t.Fatal("Unable to query foo table:", err) t.Fatal("Unable to query foo table:", err)
@ -303,10 +309,17 @@ func TestTimestamp(t *testing.T) {
t.Errorf("Value for id 3 should be the zero time, not %v", ts) t.Errorf("Value for id 3 should be the zero time, not %v", ts)
} }
} }
if id == 4 {
seen += 1
if !timestamp4.Equal(ts) {
t.Errorf("Value for id 4 should be %v, not %v", timestamp4, ts)
}
}
} }
if seen != 3 { if seen != 4 {
t.Error("Expected to see three timestamps") t.Error("Expected to see four timestamps")
} }
} }