关于以time.Time为基准取出数据库中对应row的问题

gs272 · 2014-01-14 07:06:52 · 3603 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2014-01-14 07:06:52 的主题,其中的信息可能已经有所发展或是发生改变。

o := orm.NewOrm()
qs := o.QueryTable("task")
err := qs.Filter("date",date ).One(task)

大致代码如上

背景:

1.用的sqlite3
2.存入的“date”数据项类型为time.Time,date同样

问题:

1.存入时“date”数据由Local变成UTC
2.比对时date的内容丢失,本来应该为如:
2014-01-14 09:09:09.3244243 +0000 UTC
变成了
2014-01-14 09:09:09
后面的丢失,导致数据无法比对取出。

这是怎么回事啊?请大神指教!


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3603 次点击  
加入收藏 微博
5 回复  |  直到 2014-01-15 09:13:40
polaris
polaris · #1 · 11年之前

没用 sqlite3,具体不清楚。

不过本站在使用 mysql 时,由于驱动不支持 time.Time 类型(当时作者说不好实现,不知道现在实现没有),在 go 中所有的时间都定义为 string 类型,进行存取。

gs272
gs272 · #2 · 11年之前

问题是需要用time.Time类型数据进行排序,定义为string之后就不能排序了。

polaris
polaris · #3 · 11年之前

数据取出来之后排序?这样,对于什么类型没所谓吧,都实现 sort 包中的接口就可以排序。

如果是库中排序,那就跟没所谓,只是 go 中定义为 string,并不影响表中已有字段类型。

otinn
otinn · #4 · 11年之前

转换成 unix 时间戳

gs272
gs272 · #5 · 11年之前
qs.Filter("date",date ).One(task)

主要是这句,需要从库中按时间顺序取出,然后又需要以时间数据进行筛选出对应的数据row, 但是比对时date的内容丢失,本来应该为如: 2014-01-14 09:09:09.3244243 +0000 UTC 变成了 2014-01-14 09:09:09 后面的丢失,导致数据无法比对取出。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传