Sql Access 2007:查询两个短日期值之间的日期时间字段
我有一个表单,其中包含两个文本框供用户输入。两个文本框的属性格式都设置为“短日期”。一个是“开始日期”,另一个是“结束日期”。我还有几个表,每个表都有一个DateTime字段(“studystartdatetime”)。我希望能够查询这些表,但将结果限制为DateTime字段位于输入日期(包括)之间的行。目前的情况是:Sql Access 2007:查询两个短日期值之间的日期时间字段,sql,database,ms-access,ms-access-2007,Sql,Database,Ms Access,Ms Access 2007,我有一个表单,其中包含两个文本框供用户输入。两个文本框的属性格式都设置为“短日期”。一个是“开始日期”,另一个是“结束日期”。我还有几个表,每个表都有一个DateTime字段(“studystartdatetime”)。我希望能够查询这些表,但将结果限制为DateTime字段位于输入日期(包括)之间的行。目前的情况是: WHERE s.studystartdatetime BETWEEN forms!frmMain!txtstartdate AND forms!frmmain!txtenddat
WHERE s.studystartdatetime BETWEEN forms!frmMain!txtstartdate AND forms!frmmain!txtenddate
但是,这不会返回在指定的结束日期发生的行
我尝试了CDate、Format和DateValue的每一种组合,可以将其中一个或所有字段包装起来,但我总是收到相同的神秘错误:
表达式键入不正确,或太复杂而无法计算。例如,数值表达式可能包含太多复杂的元素。尝试通过将表达式的一部分指定给变量来简化表达式
我尝试过的一些条件示例:
WHERE CDate(Format(s.studystartdatetime, "yyyy/mm/dd")) BETWEEN forms!frmMain!txtstartdate AND forms!frmmain!txtenddate
WHERE DateValue(Format(s.studystartdatetime, "yyyy/mm/dd")) BETWEEN forms!frmMain!txtstartdate AND forms!frmmain!txtenddate
WHERE CDate(Format(s.studystartdatetime, "yyyy/mm/dd")) BETWEEN CDate(Format(forms!frmMain!txtstartdate, "yyyy/mm/dd")) AND CDate(Format(forms!frmmain!txtenddate, "yyyy/mm/dd"))
WHERE DateValue(Format(s.studystartdatetime, "yyyy/mm/dd")) BETWEEN CDate(Format(forms!frmMain!txtstartdate, "yyyy/mm/dd")) AND CDate(Format(forms!frmmain!txtenddate, "yyyy/mm/dd"))
WHERE DateValue(Format(s.studystartdatetime, "Short Date")) BETWEEN forms!frmMain!txtstartdate AND forms!frmmain!txtenddate
等等
对此的任何输入都将不胜感激:)现在发生的是,您的短日期输入在用户输入当天的午夜生成日期时间值。因此,范围从2009-1-1到2009-1-10(或系统上使用的任何短日期格式)搜索从1月1日开始到1月10日开始的事件,并排除1月10日晚些时候发生的事件 若要更正,请将1添加到用户输入搜索的结束日期。这将从1月1日开始搜索到1月11日开始,包括1月10日的所有事件 最后,恰好发生在1月11日午夜的事件可以通过这种方式滑入结果,因此您应该使用
studystartdatetime>=表单!弗曼!txtStartDate和studystartdatetime
我曾考虑过这样做,但出于某种原因,我只是认为不可能添加这样的日期值。无论如何,谢谢!