2
0

Add timestamptz transcoding

This commit is contained in:
Jack Christensen
2013-07-19 13:00:22 -05:00
parent fdeb2412ec
commit faed7f2879
3 changed files with 50 additions and 1 deletions
+21
View File
@@ -94,6 +94,11 @@ func init() {
DecodeText: decodeDateFromText,
EncodeTo: encodeDate}
// timestamptz
ValueTranscoders[Oid(1184)] = &ValueTranscoder{
DecodeText: decodeTimestampTzFromText,
EncodeTo: encodeTimestampTz}
// use text transcoder for anything we don't understand
defaultTranscoder = ValueTranscoders[Oid(25)]
}
@@ -284,3 +289,19 @@ func encodeDate(w *MessageWriter, value interface{}) {
w.Write(int32(len(s)))
w.WriteString(s)
}
func decodeTimestampTzFromText(mr *MessageReader, size int32) interface{} {
s := mr.ReadByteString(size)
t, err := time.Parse("2006-01-02 15:04:05.999999-07", s)
if err != nil {
panic(fmt.Sprintf("Can't decode timestamptz: %v", err))
}
return t
}
func encodeTimestampTz(w *MessageWriter, value interface{}) {
t := value.(time.Time)
s := t.Format("2006-01-02 15:04:05.999999 -0700")
w.Write(int32(len(s)))
w.WriteString(s)
}