我想在当前时间和数据库数据之间进行比较。我的代码是:var PayBlockedLog[] model.PayBlockedLog global.DB.Where("status = ?",0).Find(&PayBlockedLog) for i := 0; i <len(PayBlockedLog); i++ { if time.Now().Unix() < PayBlockedLog[i].UnsealTime{ } }看来我应该将 PayBlockedLog[i].UnsealTime 转换为 int64。试过后没有效果
1 回答
九州编程
TA贡献1785条经验 获得超4个赞
而不是获取然后过滤,而是在查询中进行过滤。这将节省时间和内存,并避免时区问题。
我不知道您使用的是什么数据库,也不知道UnsealTime
. 如果是timestamp
or datetime
(应该是),请对照current_timestamp
.
global .DB .Where("status = ? and current_timestamp < UnsealTime", 0) .Find(&PayBlockedLog)
如果距 Unix 纪元还有几秒钟,请考虑将其转换为普通timestamp
列,以便可以使用日期/时间函数。有几种方法可以实现这一点,同时保持旧列的兼容性。
否则,您可以将当前时间转换为纪元秒。如何执行此操作取决于数据库。这是在 Postgres 中。
global .DB .Where("status = ? and extract(epoch from current_timestamp) < UnsealTime", 0) .Find(&PayBlockedLog)
- 1 回答
- 0 关注
- 96 浏览
添加回答
举报
0/150
提交
取消