【问题标题】:Using a date field from a form in an access query在访问查询中使用表单中的日期字段
【发布时间】:2014-11-04 00:08:46
【问题描述】:

我目前有一个使用表单中的日期字段的查询。一切都编译得很好,问题是当我尝试对此进行扩展时。我想在表格上显示的日期前一天指定一个日期。我当前用来获取日期的 SQL 是

WHERE ((DateValue([TIMESTAMP]))=[Forms]![Frm_Start]![Date]) 

但是,当我尝试在末尾添加 + 1 时,它会显示以下消息:

表达式输入错误,或者太复杂而无法计算。

任何建议将不胜感激。

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    使用PARAMETERS 子句作为 SQL 的第一行,通知数据库引擎表单控件包含日期/时间值。

    PARAMETERS Forms!Frm_Start![Date] DateTime;
    

    然后在 WHERE 子句中使用带有DateAdd() 的参数:

    WHERE DateValue([TIMESTAMP])=DateAdd("d", 1, Forms!Frm_Start![Date])
    

    但是,这需要为表中的每一行运行DateValue()。使用[TIMESTAMP] 索引应该会更快:

    WHERE
            [TIMESTAMP] >= DateAdd("d", 1, Forms!Frm_Start![Date])
        AND [TIMESTAMP] < DateAdd("d", 2, Forms!Frm_Start![Date])
    

    【讨论】:

    • TIMESTAMP 和 Date 都是保留字。如果可能,建议您重命名它们。
    【解决方案2】:

    一种可能性是:

    SELECT Table1.[ADateTime]
    FROM Table1
    WHERE Table1.[ADateTime] Like ([forms]![Table1]![ADate]+1) & "*"
    

    日期是以小数为时间的数字,所以还有另一种可能:

    SELECT Table1.ADateTime
    FROM Table1
    WHERE CLng([ADateTime])=[forms]![Table1]![ADate]+1
    

    【讨论】:

      【解决方案3】:

      试试 dateadd 函数:

      `dateadd("d",1,mydatefield)`
      

      【讨论】:

        猜你喜欢
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-24
        • 1970-01-01
        • 1970-01-01
        • 2022-07-06
        • 1970-01-01
        相关资源
        最近更新 更多