Add support for extracting 2006-01-02 formatted timestamps.

SQLite3 stores timestamps very naively -- they're completely untyped,
and can contain any value. The previous implementation always inserts
values in the 'datetime' format, and returns an error when attempting to
extract a field with a different format.

Some legacy databases, unfortunately, were generated using the 'date'
SQLite3 function, which produces rows in the '2006-01-02' format. This
patch adds a special case so that these rows can be extracted without
error.
This commit is contained in:
lye
2012-11-03 19:45:58 -05:00
parent 76996feb52
commit dcd44f5118
2 changed files with 65 additions and 1 deletions

View File

@@ -27,6 +27,7 @@ import (
)
const SQLiteTimestampFormat = "2006-01-02 15:04:05"
const SQLiteDateFormat = "2006-01-02"
func init() {
sql.Register("sqlite3", &SQLiteDriver{})
@@ -313,7 +314,10 @@ func (rc *SQLiteRows) Next(dest []driver.Value) error {
if rc.decltype[i] == "timestamp" {
dest[i], err = time.Parse(SQLiteTimestampFormat, s)
if err != nil {
return err
dest[i], err = time.Parse(SQLiteDateFormat, s)
if err != nil {
return err
}
}
} else {
dest[i] = s