GORM 按时间范围查询time.Time类型
时间: 2023-08-13 12:09:03 浏览: 571
查询指定时间段的数据
可以使用GORM的`Where`函数结合时间范围条件进行查询。
例如,假设我们有一个名为`Order`的模型,其中包含一个名为`CreatedAt`的`time.Time`类型字段:
```go
type Order struct {
ID uint `gorm:"primary_key"`
CreatedAt time.Time `gorm:"not null"`
// 其他字段...
}
```
要按时间范围查询,可以使用以下代码:
```go
// 查询 2021年1月1日到2021年1月31日之间创建的订单
start := time.Date(2021, 1, 1, 0, 0, 0, 0, time.Local)
end := time.Date(2021, 1, 31, 23, 59, 59, 0, time.Local)
var orders []Order
db.Where("created_at BETWEEN ? AND ?", start, end).Find(&orders)
```
在上面的示例中,我们使用`Where`函数并将条件字符串设置为`"created_at BETWEEN ? AND ?"`,并在条件字符串的末尾提供了两个`?`占位符。然后,我们按顺序将`start`和`end`时间范围的开始和结束日期作为参数传递给`Where`函数。GORM将在执行查询时将这些参数与占位符进行匹配,并将查询结果存储在`orders`变量中。
注意,我们使用了`BETWEEN`关键字来指定时间范围。`BETWEEN`关键字是一个SQL操作符,用于检查某个值是否在指定的范围内。在这种情况下,我们使用`BETWEEN`来检查`created_at`字段是否在给定的时间范围内。
阅读全文