我编写了以下代码,用GORM获得某个值的每日最大值.
- 我通过当前时间,得到一天的开始和结束.
- 我 Select 一天开始和结束之间的所有值.
- 我点了温度,得到了第一个.
我的代码:
func GetDailyMaxTemperature(ts time.Time) (*Temperature, error) {
temp:= &Temperature{}
start, end := getStartAndEndOfDay(ts)
if tx := db.Where("ts BETWEEN ? AND ?", start, end).Order("temperature ASC").First(temp); tx.Error != nil {
return temp, tx.Error
}
return temp, nil
func getStartAndEndOfDay(ts time.Time) (time.Time, time.Time) {
dayStart := time.Date(ts.Year(), ts.Month(), ts.Day(), 0, 0, 0, 0, ts.Location())
dayEnd := time.Date(ts.Year(), ts.Month(), ts.Day(), 23, 59, 59, 999, ts.Location())
return dayStart, dayEnd
}
这段代码很有效,但是我对它不是很满意,我想知道是否有更多"GORM-ish"方法来获得某个表的最大值,尤其是当涉及日期时.