package types

import (
	

	
)

const (
	dateFormat         = "2006-01-02"
	timeFormat         = "15:04:05.999999999"
	timestampFormat    = "2006-01-02 15:04:05.999999999"
	timestamptzFormat  = "2006-01-02 15:04:05.999999999-07:00:00"
	timestamptzFormat2 = "2006-01-02 15:04:05.999999999-07:00"
	timestamptzFormat3 = "2006-01-02 15:04:05.999999999-07"
)

func ( []byte) (time.Time, error) {
	 := internal.BytesToString()
	return ParseTimeString()
}

func ( string) (time.Time, error) {
	switch  := len(); {
	case  <= len(timeFormat):
		if [2] == ':' {
			return time.ParseInLocation(timeFormat, , time.UTC)
		}
		return time.ParseInLocation(dateFormat, , time.UTC)
	default:
		if [10] == 'T' {
			return time.Parse(time.RFC3339Nano, )
		}
		if  := [-9];  == '+' ||  == '-' {
			return time.Parse(timestamptzFormat, )
		}
		if  := [-6];  == '+' ||  == '-' {
			return time.Parse(timestamptzFormat2, )
		}
		if  := [-3];  == '+' ||  == '-' {
			return time.Parse(timestamptzFormat3, )
		}
		return time.ParseInLocation(timestampFormat, , time.UTC)
	}
}

func ( []byte,  time.Time,  int) []byte {
	if  == 1 {
		 = append(, '\'')
	}
	 = .UTC().AppendFormat(, timestamptzFormat)
	if  == 1 {
		 = append(, '\'')
	}
	return 
}