【问题标题】:How to define input date in WHERE clause (MS Access DB)如何在 WHERE 子句中定义输入日期(MS Access DB)
【发布时间】:2017-02-03 15:32:13
【问题描述】:

我有以下问题。目前我正在使用这个 SQL 语句:

SELECT ID, MAX(Datum) AS DateField, Assets
FROM dbTable
WHERE Datum>=DateAdd("m",-12,Date())
GROUP BY Datum, ID, Assets
ORDER BY Datum DESC;

我需要用户输入日期的最近 12 个月,但我不知道如何在 WHERE 子句中定义输入(例如 #01.01.2017#)?!

这意味着当用户选择 01/01/2017 时,结果需要是去年的所有 12 个月。

【问题讨论】:

    标签: sql date ms-access where-clause


    【解决方案1】:

    替换

    Date()
    

    Forms!MyForm!MyCombo.Value
    

    【讨论】:

    • 当我用 #01/01/2017# 替换 Date() 时,我总是得到从 02/02/2017 到 04/01/2016 的日期
    【解决方案2】:

    按基准分组时选择 Max(Datum) 没有意义。因此:

    SELECT ID, Datum AS DateField, Assets
    FROM dbTable
    GROUP BY Datum, ID, Assets
    HAVING Datum >= DateAdd("yyyy", -1, DateValue(Forms!YourForm!txtDatum))
    ORDER BY Datum DESC;
    

    【讨论】:

      【解决方案3】:

      好的,我解决了如下问题:

      SELECT ID, Datum, Assets
      FROM dbTable
      WHERE Datum>=DateAdd("m",-12,#01/01/2017#) and Datum<=#01/01/2017# and ID=325
      GROUP BY Datum, ID, Assets
      ORDER BY Datum DESC;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多