MS Access Date() 没有结果

Posted

技术标签:

【中文标题】MS Access Date() 没有结果【英文标题】:MS Access Date() yields no results 【发布时间】:2018-07-10 15:09:56 【问题描述】:

我已经搜索过,但无法弄清楚这一点。很多年前我曾经使用 MS Access,但现在主要转向 phpmysql 来完成我的工作。但是当我在工作时,我必须使用这些资源。

尝试构建从 ODBC 连接到 SQL Server 的基本查询。其中一列是日期字段(SQL 服务器字段类型:日期时间)。

当我构建查询并为我的 Where 子句输入 Date() 时,它应该不会产生任何结果。

SELECT dbo_Order.OrderStatusID,
    dbo_Order.FillerOrderNumber,
    dbo_Order.RelevantClinicalInfo,
    dbo_Order.ReasonForStudy,
    dbo_Order.ProcedureDescList,
    dbo_Order.PlacerFld2 AS Modality,
    dbo_Order.ScheduleDate,
    dbo_Order.ExplorerStatus,
    dbo_Order.SiteID
FROM dbo_Order
WHERE (
        (
            (dbo_Order.PlacerFld2) = "CRFL"
            OR (dbo_Order.PlacerFld2) = "CT"
            OR (dbo_Order.PlacerFld2) = "SAMR"
            )
        AND ((dbo_Order.ScheduleDate) = DATE ())
        AND ((dbo_Order.ExplorerStatus) = "SCHEDULED")
        AND ((dbo_Order.SiteID) = 1)
        );

我也尝试过类似 Date: Format([ScheduleDate], "dd/mm/yyyy") 的操作,但这也不会返回任何结果。

MS Access 2016 SQL Server 2008

【问题讨论】:

这个查询是基于查询 ODBC 查询/链接表,还是 ODBC 查询本身?看起来它是一个 ODBC 查询,因此您不会使用 DATE(),因为它不是 SQL 函数(接收当前日期),请使用 GETDATE() 您的 ScheduleDate 是否包含任何时间值。 Date() 默认返回 1/1/2018 00:00,因此如果您的预定日期是 1/1/2018 04:34:00,它将不匹配。尝试使用 DateValue([ScheduleDate]) 只返回日期。 尝试使用固定值:dbo_Order.ScheduleDate = #2018/07/10#,当然使用表中存在的日期。这必须有效。 谢谢,@Minty 确实有效。我不知道要尝试,所以我今天学到了一些新东西。 【参考方案1】:

如果您的 ScheduleDate 包含任何时间值,则 Date() 默认返回 2018 年 1 月 1 日 00:00,因此如果您的计划日期是 2018 年 1 月 1 日 04:34:00,它将不匹配。

尝试使用 DateValue([ScheduleDate]) 只返回日期

【讨论】:

【参考方案2】:

我更喜欢:

dbo_Order.ScheduleDate >= Date() AND dbo_Order.ScheduleDate < Date() + 1

DateValue([ScheduleDate])必须在每一行上计算,并且不能使用索引(如果有的话),这会影响对大量数据的查询性能。见Access query won't work when dates have times另外DateValue不能处理NULL值。

【讨论】:

以上是关于MS Access Date() 没有结果的主要内容,如果未能解决你的问题,请参考以下文章

MS Access Year(Date() 函数

MS Access:比较 2 个重复的表

MS Access 在两个日期之间进行选择?

将日期插入 Ms-Access 数据库的问题

运行时错误 3032,无法执行此操作 ms-access

即使没有结果,如何在分组的 MS Access 报告中显示类别