为了账号安全,请及时绑定邮箱和手机立即绑定

golang 比较时间大小

golang 比较时间大小

Go
慕桂英3389331 2022-07-11 16:51:25
我想在当前时间和数据库数据之间进行比较。我的代码是: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. 如果是timestampor 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)


查看完整回答
反对 回复 2022-07-11
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信