Access 2007:查询两个短期期值之间DateTime字段
技术问答
134 人阅读
|
0 人回复
|
2023-09-13
|
我有一张表格,包括两个文本框供用户输入。两个文本框的属性格式都设置为短期。一个是开始日期,另一个是结束日期。我还有几个表,每个表都有一个DateTime字段(“studystartdatetime)。我希望能查询这些表格,但结果仅限于DateTime字段介于输入日期(含)之间的行。目前的条件是:
9 x$ N# V2 G. C, x ^2 \) r k' WWHERE s.studystartdatetime BETWEEN forms!frmMain!txtstartdate AND forms!frmmain!txtenddate但是,这不会回到指定的结束日期。. c" J& n, g1 e( l, p) B
我试过将军CDate,Format和DateValue每个组合都包装在一个或所有这些字段中,但我总是收到同样的神秘错误:7 k$ E6 \! y7 E2 ^, J0 Z
表达式输入错误,或过于复杂,无法寻求价值。例如,数字表达式可能包含太多复杂的元素。试着简化表达式,将表达式的一部分分配给变量。
: y6 n, `2 F3 {一些我尝试过的条件示例:" T+ p. a% h! {# }
WHERE CDate(Format(s.studystartdatetime,"yyyy/mm/dd")) BETWEEN forms!frmMain!txtstartdate AND forms!frmmain!txtenddateWHERE DateValue(Format(s.studystartdatetime,"yyyy/mm/dd")) BETWEEN forms!frmMain!txtstartdate AND forms!frmmain!txtenddateWHERE 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等等。
" }8 x- Z# C' ?1 J5 e) h任何对此的投资都将不胜感激
: w1 E) U* s) E; M9 X
, s1 j6 `0 w# m7 m) R, t 解决方案:
& k2 E9 u b# l( \ 在用户输入当天的午夜,发生了您输入的短日期datetime值。因此,2009年的范围-1-1到2009-1-10(或系统中使用的任何短期格式)正在从1月1日开始搜索
+ A$ ]: s* t+ V) d8 _开始 到1月10日 开始 事件,但不包括发生在1月10日晚些时候。- D9 ~5 t5 ~) \
如需更正,请在用户输入搜索结束前添加1。搜索时间从1月1日开始到1月11日,包括1月10日的所有事件。
' m7 V$ {+ Y7 U1 D: T最终,发生在1月11日午夜 恰好 事件可以这样进入你的结果,所以你应该使用它BETWEEN而不是* q* v E! g: [' y' ~# g
studystartdatetime >= forms!frmMain!txtStartDate AND studystartdatetime |
|
|
|
|
|