我如何发现3月2日和3月3日在3月1日和3月4日之间? [英] How do I find that March 2nd and March 3rd falls between March 1st and March 4th?
问题描述
1)我有两个日期,分别为 我拥有所有这些值,但是我需要编写一个查询来查找 3月2日和3月3日是 3月1日和3月4日是 start
和端
。 2)用户在浏览器中选择两个日期,比如 userStartDate
和 userEndDate code>。
start
和 end
位于 userStartDate
和 userEndDate
之间。例如,3月2日和3月3日是3月1日至3月4日。鉴于:
userStartDate
和 userEndDate
日期分别为
开始
和结束
我有这样的代码,它适用于个案之间< userStartDate
和 userEndDate
如下所示:
test = Holiday.createCriteria()。list {
和{
user {
eq('username' ,'username')
}
或{
之间('start',userStartDate,userEndDate)
('end',userStartDate,userEndDate)
}
}
}
根据我的问题,如何将该部分附加到我的代码中?
在此先感谢。假设您已经检查过 userStartDate
是否在$ code> userEndDate
(在用户选择时验证)并且 start
位于 end $ c $之前(在插入时验证),条件查询应该如下所示:
test = Holiday.createCriteria( ).list {
user {eq('username',username)}
lt('start',userStartDate)
gt('end',userEndDate)
}
这会检查 start
是否小于) userStartDate
并且 end
大于(即之后) userEndDate
。因为所有子句都是隐含的,所以也不需要包装在和
块中。
I need a way to find these in grails:
1) I have two dates say start
and end
.
2) User selects two dates in the browser say them userStartDate
and userEndDate
.
I have all these values, but I need to write a query that do find that both start
and end
falls between userStartDate
and userEndDate
.
For example, March 2nd and March 3rd falls between March 1st and March 4th. Given that :
March 2nd and March 3rd are userStartDate
and userEndDate
dates respectively
March 1st and March 4th are start
and end
respectively. (they are domain objects).
I have this code which works for between cases i.e start
is in between userStartDate
and userEndDate
like so :
test = Holiday.createCriteria().list {
and {
user {
eq('username',username)
}
or {
between('start',userStartDate,userEndDate)
between('end',userStartDate,userEndDate)
}
}
}
As according to my question, how can attach that part into my code?
Thanks in advance.
Assuming that you already do a check that userStartDate
is before userEndDate
(validated when the user selects) and that start
is before end
in the database (validated when inserting), the criteria query should look something like this:
test = Holiday.createCriteria().list {
user { eq('username',username) }
lt('start', userStartDate)
gt('end', userEndDate)
}
This checks that start
is less than (i.e. before) userStartDate
and that end
is greater than (i.e. after) userEndDate
. There is also no need to wrap in an and
block since all clauses are implicitly and-ed.
这篇关于我如何发现3月2日和3月3日在3月1日和3月4日之间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!