本文整理匯總了Golang中github.com/pingcap/tidb/mysql.Time.FromPackedUint方法的典型用法代碼示例。如果您正苦於以下問題:Golang Time.FromPackedUint方法的具體用法?Golang Time.FromPackedUint怎麽用?Golang Time.FromPackedUint使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/pingcap/tidb/mysql.Time
的用法示例。
在下文中一共展示了Time.FromPackedUint方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Unflatten
// Unflatten converts a raw datum to a column datum.
func Unflatten(datum types.Datum, ft *types.FieldType, inIndex bool) (types.Datum, error) {
if datum.IsNull() {
return datum, nil
}
switch ft.Tp {
case mysql.TypeFloat:
datum.SetFloat32(float32(datum.GetFloat64()))
return datum, nil
case mysql.TypeTiny, mysql.TypeShort, mysql.TypeYear, mysql.TypeInt24,
mysql.TypeLong, mysql.TypeLonglong, mysql.TypeDouble, mysql.TypeTinyBlob,
mysql.TypeMediumBlob, mysql.TypeBlob, mysql.TypeLongBlob, mysql.TypeVarchar,
mysql.TypeString:
return datum, nil
case mysql.TypeDate, mysql.TypeDatetime, mysql.TypeTimestamp:
var t mysql.Time
t.Type = ft.Tp
t.Fsp = ft.Decimal
var err error
err = t.FromPackedUint(datum.GetUint64())
if err != nil {
return datum, errors.Trace(err)
}
datum.SetMysqlTime(t)
return datum, nil
case mysql.TypeDuration:
dur := mysql.Duration{Duration: time.Duration(datum.GetInt64())}
datum.SetValue(dur)
return datum, nil
case mysql.TypeEnum:
enum, err := mysql.ParseEnumValue(ft.Elems, datum.GetUint64())
if err != nil {
return datum, errors.Trace(err)
}
datum.SetValue(enum)
return datum, nil
case mysql.TypeSet:
set, err := mysql.ParseSetValue(ft.Elems, datum.GetUint64())
if err != nil {
return datum, errors.Trace(err)
}
datum.SetValue(set)
return datum, nil
case mysql.TypeBit:
bit := mysql.Bit{Value: datum.GetUint64(), Width: ft.Flen}
datum.SetValue(bit)
return datum, nil
}
return datum, nil
}
示例2: TestTime
func (s *testCodecSuite) TestTime(c *C) {
defer testleak.AfterTest(c)()
tbl := []string{
"2011-01-01 00:00:00",
"2011-01-01 00:00:00",
"0001-01-01 00:00:00",
}
for _, t := range tbl {
m := types.NewDatum(parseTime(c, t))
b, err := EncodeKey(nil, m)
c.Assert(err, IsNil)
v, err := Decode(b)
c.Assert(err, IsNil)
var t mysql.Time
t.Type = mysql.TypeDatetime
t.FromPackedUint(v[0].GetUint64())
c.Assert(types.NewDatum(t), DeepEquals, m)
}
tblCmp := []struct {
Arg1 string
Arg2 string
Ret int
}{
{"2011-10-10 00:00:00", "2000-12-12 11:11:11", 1},
{"2000-10-10 00:00:00", "2001-10-10 00:00:00", -1},
{"2000-10-10 00:00:00", "2000-10-10 00:00:00", 0},
}
for _, t := range tblCmp {
m1 := types.NewDatum(parseTime(c, t.Arg1))
m2 := types.NewDatum(parseTime(c, t.Arg2))
b1, err := EncodeKey(nil, m1)
c.Assert(err, IsNil)
b2, err := EncodeKey(nil, m2)
c.Assert(err, IsNil)
ret := bytes.Compare(b1, b2)
c.Assert(ret, Equals, t.Ret)
}
}