我有一个SQL语句:
select * from formsresponse fr, formsresponses frs
where fr.formsresponse_id = frs.formsresponse_id
and fr.form_submitdate >= '3/13/2015' and fr.form_submitdate <= '3/31/2015'
奇怪的是,它会为3/13到3/27的记录带回结果集,但是日期为3/31的记录不会回来。他们在数据库中。该字段是日期时间字段。这对我来说毫无意义。我甚至尝试了使用BETWEEN语句的SQL,我得到了相同的结果。
任何人都可以向我解释为什么会发生这种情况吗?
答案 0 :(得分:3)
你的日期时间也包含时间成分,所以它不是00:00:00?使用小于运算符:
Patch xPatch = new Patch();
xPatch.op = "replace";
xPatch.path = "/";
xPatch.value = new Plan() { state = "ACTIVE" };
PatchRequest yPatch = new PatchRequest();
yPatch.Add(xPatch);
cPLan.Update(apiContext, yPatch);
同样使用YYYYMMDD比其他格式
更安全答案 1 :(得分:0)
您还可以将fr.form_submitdate
字段转换为日期类型,而无需进行比较。
SELECT
*
FROM
formsresponse fr,
formsresponses frs
WHERE
fr.formsresponse_id = frs.formsresponse_id
AND CAST(fr.form_submitdate AS DATE) BETWEEN '3/13/2015' AND '3/31/2015'
假设您出于某种原因可能在日期时间字段中有索引,并且您需要更改过程中的结束日期,则只需将1天添加到结束日期。
SELECT
*
FROM
formsresponse fr,
formsresponses frs
WHERE
fr.formsresponse_id = frs.formsresponse_id
AND fr.form_submitdate BETWEEN '3/13/2015' AND DATEADD(DAY, 1, '3/31/2015')