check destination type whether it's *time.Time or not.

This commit is contained in:
mattn 2012-12-26 10:01:39 +09:00
parent 65fd601635
commit f86c8f208d
1 changed files with 14 additions and 7 deletions

View File

@ -324,20 +324,27 @@ func (rc *SQLiteRows) Next(dest []driver.Value) error {
case C.SQLITE_TEXT: case C.SQLITE_TEXT:
var err error var err error
s := C.GoString((*C.char)(unsafe.Pointer(C.sqlite3_column_text(rc.s.s, C.int(i))))) s := C.GoString((*C.char)(unsafe.Pointer(C.sqlite3_column_text(rc.s.s, C.int(i)))))
if rc.decltype[i] == "timestamp" || rc.decltype[i] == "datetime" {
dest[i], err = time.Parse(SQLiteTimestampFormat, s) switch dest[i].(type) {
if err != nil { case *time.Time:
dest[i], err = time.Parse(SQLiteDateFormat, s) if rc.decltype[i] == "timestamp" || rc.decltype[i] == "datetime" {
dest[i], err = time.Parse(SQLiteTimestampFormat, s)
if err != nil { if err != nil {
dest[i], err = time.Parse(SQLiteDatetimeFormat, s) dest[i], err = time.Parse(SQLiteDateFormat, s)
if err != nil { if err != nil {
dest[i] = s dest[i], err = time.Parse(SQLiteDatetimeFormat, s)
if err != nil {
dest[i] = s
}
} }
} }
} else {
dest[i] = s
} }
} else { default:
dest[i] = s dest[i] = s
} }
} }
} }
return nil return nil