From 6710e996b5a7a19f6d085ce7a95ba6787565d3ab Mon Sep 17 00:00:00 2001 From: Mehmet Gurevin Date: Thu, 23 Oct 2014 20:12:32 +0300 Subject: [PATCH] fixed timezone problem for datetime types --- sqlite3.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sqlite3.go b/sqlite3.go index 94ebce3..157d4c3 100644 --- a/sqlite3.go +++ b/sqlite3.go @@ -486,7 +486,7 @@ func (rc *SQLiteRows) Next(dest []driver.Value) error { val := int64(C.sqlite3_column_int64(rc.s.s, C.int(i))) switch rc.decltype[i] { case "timestamp", "datetime", "date": - dest[i] = time.Unix(val, 0) + dest[i] = time.Unix(val, 0).Local() case "boolean": dest[i] = val > 0 default: @@ -513,12 +513,14 @@ func (rc *SQLiteRows) Next(dest []driver.Value) error { dest[i] = nil case C.SQLITE_TEXT: var err error + var timeVal time.Time s := C.GoString((*C.char)(unsafe.Pointer(C.sqlite3_column_text(rc.s.s, C.int(i))))) switch rc.decltype[i] { case "timestamp", "datetime", "date": for _, format := range SQLiteTimestampFormats { - if dest[i], err = time.Parse(format, s); err == nil { + if timeVal, err = time.ParseInLocation(format, s, time.UTC); err == nil { + dest[i] = timeVal.Local() break } }