From 36c29768703dfaf2466dbda9ceff0eec69046052 Mon Sep 17 00:00:00 2001
From: achun <achun.shx@qq.com>
Date: Wed, 7 Aug 2013 15:02:33 +0800
Subject: [PATCH] fix time.Duration convert to string. Reserved to the
 millisecond In all the mysql and sqlite and postgresql wrapper,fun toInternal
 in collection.go.

Reserved to the millisecond:
```
return fmt.Sprintf(TimeFormat, int(t/time.Hour), int(t/time.Minute%60), int(t/time.Second%60), t%time.Second/time.Millisecond)
```
---
 mysql/collection.go      | 2 +-
 postgresql/collection.go | 2 +-
 sqlite/collection.go     | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/mysql/collection.go b/mysql/collection.go
index 68620251..6f7872b5 100644
--- a/mysql/collection.go
+++ b/mysql/collection.go
@@ -414,7 +414,7 @@ func toInternal(val interface{}) string {
 	case time.Time:
 		return t.Format(DateFormat)
 	case time.Duration:
-		return fmt.Sprintf(TimeFormat, int(t.Hours()), int(t.Minutes())%60, int(t.Seconds())%60, t.Nanoseconds())
+		return fmt.Sprintf(TimeFormat, int(t/time.Hour), int(t/time.Minute%60), int(t/time.Second%60), t%time.Second/time.Millisecond)
 	case bool:
 		if t == true {
 			return "1"
diff --git a/postgresql/collection.go b/postgresql/collection.go
index 6539fb0f..c5970b4a 100644
--- a/postgresql/collection.go
+++ b/postgresql/collection.go
@@ -430,7 +430,7 @@ func toInternal(val interface{}) string {
 	case time.Time:
 		return t.Format(DateFormat)
 	case time.Duration:
-		return fmt.Sprintf(TimeFormat, int(t.Hours()), int(t.Minutes())%60, int(t.Seconds())%60, uint64(t.Nanoseconds())%1e9)
+		return fmt.Sprintf(TimeFormat, int(t/time.Hour), int(t/time.Minute%60), int(t/time.Second%60), t%time.Second/time.Millisecond)
 	case bool:
 		if t == true {
 			return "1"
diff --git a/sqlite/collection.go b/sqlite/collection.go
index e450cc88..89ccc436 100644
--- a/sqlite/collection.go
+++ b/sqlite/collection.go
@@ -417,7 +417,7 @@ func toInternal(val interface{}) string {
 	case time.Time:
 		return t.Format(DateFormat)
 	case time.Duration:
-		return fmt.Sprintf(TimeFormat, int(t.Hours()), int(t.Minutes())%60, int(t.Seconds())%60, uint64(t.Nanoseconds())%1e9)
+		return fmt.Sprintf(TimeFormat, int(t/time.Hour), int(t/time.Minute%60), int(t/time.Second%60), t%time.Second/time.Millisecond)
 	case bool:
 		if t == true {
 			return "1"
-- 
GitLab