aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordeepilla <hello@deepilla.com>2017-06-30 13:17:04 -0500
committerdeepilla <hello@deepilla.com>2017-06-30 13:17:04 -0500
commit05123859bed77249c3d9ca8efe6adc3cce1e1bed (patch)
treeecca0bc608fe592ac2007e6cb180c71a1375b558
parentMerge pull request #429 from emakeev/cgo_panic_fix (diff)
downloadgolite-05123859bed77249c3d9ca8efe6adc3cce1e1bed.tar.gz
golite-05123859bed77249c3d9ca8efe6adc3cce1e1bed.tar.xz
Don't convert Unix times to nanoseconds when querying datetime fields. Fixes #430.
-rw-r--r--sqlite3.go5
-rw-r--r--sqlite3_test.go1
2 files changed, 4 insertions, 2 deletions
diff --git a/sqlite3.go b/sqlite3.go
index b34c3a5..d3a6407 100644
--- a/sqlite3.go
+++ b/sqlite3.go
@@ -961,10 +961,11 @@ func (rc *SQLiteRows) Next(dest []driver.Value) error {
// large to be a reasonable timestamp in seconds.
if val > 1e12 || val < -1e12 {
val *= int64(time.Millisecond) // convert ms to nsec
+ t = time.Unix(0, val)
} else {
- val *= int64(time.Second) // convert sec to nsec
+ t = time.Unix(val, 0)
}
- t = time.Unix(0, val).UTC()
+ t = t.UTC()
if rc.s.c.loc != nil {
t = t.In(rc.s.c.loc)
}
diff --git a/sqlite3_test.go b/sqlite3_test.go
index 03b678d..e563479 100644
--- a/sqlite3_test.go
+++ b/sqlite3_test.go
@@ -403,6 +403,7 @@ func TestTimestamp(t *testing.T) {
}{
{"nonsense", time.Time{}},
{"0000-00-00 00:00:00", time.Time{}},
+ {time.Time{}.Unix(), time.Time{}},
{timestamp1, timestamp1},
{timestamp2.Unix(), timestamp2.Truncate(time.Second)},
{timestamp2.UnixNano() / int64(time.Millisecond), timestamp2.Truncate(time.Millisecond)},