我正在尝试在视图上创建一个过滤器,允许用户按时间范围过滤数据:
当用户选择此选项时,它会映射到包含两个日期对象的枚举类型TimeRange
。这些日期对象仅包含相应的时间,分别称为lowerBound
和upperBound
。例如:
MIDNIGHT_TO_SIX(1, Date.parse("HH:mm:ss", "00:00:00"), Date.parse("HH:mm:ss", "06:00:00")
这会产生Date
个对象。因为我没有指定日期部分,所以设置为纪元日期。当我在批评中使用这些过滤时:
and {
or {
eq('startDateTime', range.lowerBound)
gt('startDateTime', range.lowerBound)
}
or {
eq('startDateTime', range.upperBound)
lt('startDateTime', range.upperBound)
}
}
什么都没有退回!这显然是因为我的数据库中的所有日期都没有在上一次or
闭合之前或等于纪元时间。
有没有办法告诉标准在比较期间仅使用时间部分,或者有没有办法让我lowerBound
和upperBound
不关心{{1 }}?
答案 0 :(得分:1)
直接的方法是从00:00:00保存秒数(或毫秒),这样查找就像:
enum Range {
MIDNIGHT_TO_SIX( 1, 0, 6 * 60 * 60 ) //in seconds
}
标准:
{
between 'startInSec', range.lower, range.upper
}