如何测试某个值是否在我的两个数据库列之间?
我需要做这样的事情:
between(column1, column2, 'value')
或类似的东西:
or{
and {
ge("hora_inicio", evento.hora_inicio)
le("hora_fim", evento.hora_inicio)
}
and {
ge("hora_inicio", evento.hora_fim)
le("hora_fim", evento.hora_fim)
}
}
任何想法?
谢谢!
答案 0 :(得分:2)
没有选项可以检查两列是否在值之间。您将不得不进行两次单独的比较。您可以将一个数据库列与另一个数据库列进行比较,但它看起来并不像您想要的那样。请参阅此处的文档:http://docs.grails.org/latest/ref/Domain%20Classes/createCriteria.html
从你的第二个例子看,你需要找到所有在evento.hora_inicio和evento.hora_fim之间有一个开始时间的条目,或者在evento.hora_inicio和evento.hora_fim之间有一个订单时间的条目。
感觉这可以简化为在evento.hora_fim之前查找具有hora_inicio的所有条目并且在evento.hora_inicio之后具有hora_fim。这看起来像这样:
Event evento = getEventFromSomewhere()
Appointment.createCriteria().list{
le 'hora_inicio', evento.hora_fim
ge 'hora_fim', evento.hora_inicio
}